Commit Graph
1105 Commits
Author SHA1 Message Date
Alexis Rouillard ed688659f4 Merge branch 'master' into mango 2026-07-03 22:17:29 +02:00
Alex fe0e1c139b power-profiles-daemon: preserve backward compatibility for driver
Keep the {driver} placeholder working and support older
power-profiles-daemon versions that only expose a single Driver DBus
property, while still reading the new CpuDriver/PlatformDriver fields.

- Read the legacy Driver property and fall back to it when CpuDriver or
  PlatformDriver are missing (older daemon).
- Derive {driver} from CpuDriver when the daemon no longer exposes
  Driver (recent daemon), so existing configs using {driver} keep
  working.
- Align the default tooltip-format in the constructor with the
  documented default.
2026-07-03 22:11:51 +02:00
Alex b7e5805f4b Merge remote-tracking branch 'origin/master' into RaphaelKimmig/master
# Conflicts:
#	include/modules/niri/workspaces.hpp
2026-07-03 22:11:34 +02:00
Alexis Rouillard 69c09800d5 Merge branch 'master' into feat/custom-format-icons-keyboard 2026-07-03 22:11:13 +02:00
Alexis Rouillard 396e8b714f Merge branch 'master' into mpd-idle 2026-07-03 22:11:10 +02:00
Alexis Rouillard da91ca2457 Merge branch 'master' into smooth-power 2026-07-03 22:11:06 +02:00
Alex 68097dacd4 Merge remote-tracking branch 'origin/master' into feat/wlr-taskbar-bar-css-states 2026-07-03 22:10:26 +02:00
Alex b9c82f5dd3 Merge remote-tracking branch 'origin/master' into ppd-split-driver 2026-07-03 22:09:51 +02:00
Alex 6cf6157048 Merge remote-tracking branch 'origin/master' into river-tags-monitor-focus 2026-07-03 22:09:45 +02:00
Alex 4bf82b88a0 style(pulseaudio): clang-format audio_backend helpers 2026-07-03 22:01:20 +02:00
Alex 504ebfba62 Merge remote-tracking branch 'origin/master' into finitemonkey/master 2026-07-03 21:49:16 +02:00
Alexis Rouillard 0b50f654ca Merge pull request #5093 from oqlatulesba3/fix/sni-host-proxy-retry
fix(sni): retry Host proxy creation on transient errors
2026-07-03 21:47:39 +02:00
Alex 5181f84648 fix(sni): prevent use-after-free and infinite retry in Host proxy retry
Store the retry timeout connection in a Host member and disconnect it in
~Host, so a Host destroyed within the retry window no longer invokes the
timeout callback on freed memory. Cap the retries (MAX_RETRIES) so a
watcher that never reappears no longer spins forever every 200ms; reset
the counter on success and when the watcher name vanishes.
2026-07-03 21:39:36 +02:00
Alex dc017d8fd3 fix(hyprland/workspaces): disconnect hover-check timeout on Workspace destruction
The hover-check Glib::signal_timeout re-arms every 50ms and is not owned by
the Workspace. Since Workspaces are destroyed at runtime, a workspace removed
while its check is armed would let the timeout fire on freed memory (use-after-
free, also touching the destroyed m_button). Add a destructor that calls
stopHoverCheck() to disconnect the source.
2026-07-03 21:32:55 +02:00
Alex 987d5758a6 Merge remote-tracking branch 'origin/master' into fix/hyprland-workspace-taskbar-hover 2026-07-03 21:32:20 +02:00
Alexis Rouillard 63424a75ae Merge pull request #5064 from Siriusuna/fix/mpd-markup-truncation
fix(mpd): truncate before sanitization and improve tooltip UX
2026-07-03 21:00:03 +02:00
Alexis Rouillard fce96987e1 Merge pull request #5028 from JeremieRodon/fix/tray-hide-when-empty
fix(tray): hide module when no items are visible
2026-07-03 20:58:33 +02:00
Alexis Rouillard ae636a1ca8 Merge pull request #4742 from Sayrus/sayrus-gh/sway-workspaces-quotes
fix(sway/workspaces): use number when available to avoid parsing issues
2026-07-03 20:55:14 +02:00
Alexis Rouillard f4648c0fcd Merge pull request #5046 from awused/mpd-duration
fix: mpd specify timer interval in seconds
2026-07-03 20:53:33 +02:00
Alexis Rouillard c77c60e0b6 Merge pull request #5138 from runxiyu/runxiyu
fix(sni): ignore name/pixmap updates for custom icons
2026-07-03 20:52:16 +02:00
Alexis Rouillard 6c6b69b862 Merge pull request #5114 from jaschiu/patch-3
fix(privacy): segfault due to use-after-free from get_children()
2026-07-03 20:52:12 +02:00
Alexis Rouillard 2e0c34af5e Merge branch 'master' into fix/mpd-markup-truncation 2026-07-03 20:45:15 +02:00
Alexis Rouillard dfe2d80496 Merge branch 'master' into fix/tray-hide-when-empty 2026-07-03 20:45:10 +02:00
Alexis Rouillard fa79b931e9 Merge branch 'master' into sayrus-gh/sway-workspaces-quotes 2026-07-03 20:45:01 +02:00
Alexis Rouillard 0445607fb6 Merge branch 'master' into mpd-duration 2026-07-03 20:44:45 +02:00
Alexis Rouillard 0116808f4b Merge pull request #5079
Fix (memory): Fix tooltip showing incorrect unit and add proper unit initialization
2026-07-03 20:43:20 +02:00
Alexis Rouillard 260a68cf58 Merge pull request #5100 from SaveTheRbtz/codex-mpd-playing-update
perf(mpd): avoid duplicate playing-state updates
2026-07-03 19:55:23 +02:00
Ibrahim Issa 4d1a561cdc feat(modules): pause background threads when display is asleep
Currently, modules polling hardware nodes continuously wake up kernel drivers even when the monitor is asleep (e.g., DPMS off), flooding dmesg.

- Adds 'disable-on-sleep' config flag
- Hooks GTK window map/unmap signals to track DPMS state
- Propagates suspend/resume calls to AModule worker threads
2026-07-03 18:44:03 +02:00
Runxi Yu e37fcee35d fix(sni): ignore name/pixmap updates for custom icons 2026-06-19 05:51:00 +00:00
iamcheyan 14e59daae4 feat(wlr/taskbar): expose active toplevel state on the bar window
Add opt-in bar-css-states option to wlr/taskbar module.

When enabled, the module tracks the active workspace and updates CSS
classes on window#waybar to reflect the current window state:
- toplevel-active: when a window is focused
- toplevel-maximized: when any non-minimized window on active workspace is maximized
- toplevel-minimized: when the active window is minimized
- toplevel-fullscreen: when any non-minimized window on active workspace is fullscreen

This feature requires compositor support for ext-workspace-v1 protocol
to correctly track workspace membership. Without it, classes fall back
to the active application state only.

Also includes active-only option implementation.

Changes:
- Add ext-workspace-v1 protocol support for workspace tracking
- Implement WorkspaceState tracking in Taskbar class
- Add workspace management lifecycle (create/remove/done)
- Add bar CSS class update logic with aggregation
- Add visible() getter to Task class
- Implement active-only task visibility control
- Update man page with documentation and CSS examples

Signed-off-by: iamcheyan <iamcheyan@users.noreply.github.com>
2026-06-13 11:34:29 +09:00
Jason Chiu 2506196274 Update privacy.hpp 2026-06-09 06:49:41 +00:00
Alexey Ivanov 0cccf0d8b5 perf(mpd): avoid duplicate playing-state updates 2026-06-04 15:23:54 -07:00
DreamMaoMao 3eeffbe389 feat: add mango modules: workspace,language,keymode,window,layout 2026-05-29 12:56:40 +08:00
muratyalcin-ce 5ea824c24c Use unit in config for memory module tooltip 2026-05-28 23:56:52 +03:00
stalker 822071f36e feat(custom): add image 2026-05-25 08:18:12 +04:00
Carlo Teubner d8848a478b Sway IPC: code cleanups 2026-05-24 08:20:10 +01:00
Siriusuna 81fd9ee4ab fix(mpd): truncate before sanitization and improve tooltip UX
Fix an issue in the MPD module where text failed to render
when raw tags containing markup characters were truncated
mid-sequence after sanitization,
resulting in fragmented XML entities (such as `&amp;` cut into `&am`).

Resolve this by shifting the order of operations to
truncate the raw strings *before* running `sanitize_string`.
To keep `setLabel` decoupled and clean,
we introduce helper methods (`getArtistStr`, `getAlbumArtistStr`,
`getAlbumStr`, `getTitleStr`) inside the `MPD` class,
matching the architectural style of MPRIS.

Additionally:
- Introduce support for the customizable `ellipsis` config option
  (defaulting to `…`).
- Switch the truncation logic of the MPD module to be
  visual-width-aware using the newly extracted
  `waybar::util::utf8_truncate`.
- Decouple the tooltip text from the main label's truncated text.
  The tooltip now displays un-truncated, complete metadata
  (properly escaped), providing a significantly better user
  experience.
2026-05-22 03:15:26 +08:00
finitemonkey 0351ac8fb2 Additional options when muted for the PulseAudio-Slider module:
- Add "muted" class for styling the muted state.
- Add "zero-on-mute" boolean option to control slider position
  when muted.
- Add "unmute-on-volume-change" boolean option to control whether
  to automatically unmute when the volume changes.
2026-05-17 08:22:17 +01:00
Adam Druzd ff76e96786 fix(hyprland): keep workspace hover over taskbar icons 2026-05-17 09:12:08 +02:00
Desuwa 546b53d675 mpd: Implement idle events for Playing state 2026-05-16 15:41:09 -07:00
Desuwa 7e2afaa5b3 fix: mpd specify timer interval in seconds 2026-05-16 14:05:17 -07:00
Jack Barnes 51becf2fbc feat(niri/workspaces): Add enable-bar-scroll option 2026-05-16 13:03:53 +08:00
Antoine Gaudreau Simard 3971bb6c00 feat: add support for multiple batteries in a single bluetooth device 2026-05-13 11:48:42 -04:00
yyyumeniku 2a05edaf6a hyprland/workspaces: add debounce timer to prevent workspace button flicker
When switching between workspaces rapidly (especially empty ones),
Hyprland sends createworkspace and destroyworkspace events slightly
out of order. This causes workspace buttons to render in wrong
positions for a split second before snapping to their correct spots.

Add a 7ms debounce timer that batches workspace events before
calling dp.emit(), preventing the visual glitch.

Fixes #4376
2026-05-12 20:09:13 -04:00
Jérémie Rodon 5c3ec1fd63 fix(tray): hide module when no items are visible
Tray::update() already had logic to hide the module when all child items were passive, but it was only re-run on item add/remove — never on a status change. When the last visible item transitioned to Passive, the item hid itself but the now-empty module remained visible.

Connect Tray to each item's Gtk::EventBox signal_show/signal_hide so update() runs on every visibility transition, and simplify update() to check child->get_visible() directly instead of inspecting the `passive` CSS class. The Tray-level `show-passive-items` read becomes redundant since Item already honours it when deciding its own visibility; remove it along with the now-unused Tray::show_passive_ member.

Fixes: #3721
2026-05-11 22:47:24 +02:00
Higor Prado 97917db593 test(hyprland): expose dispatch internals for unit tests
Move buildLuaDispatch and isLuaProtocol from private to
protected/public so IPCTestHelper can access them.

Add 7 tests covering all buildLuaDispatch branches, dispatch
error path, and isLuaProtocol cache behavior.
2026-05-02 20:25:43 -03:00
Higor Prado e17c0d9f0a fix(hyprland/workspaces): adapt dispatch commands for Lua IPC protocol
Hyprland 0.54 replaced the text-based dispatch socket protocol with a
Lua-based one. Commands like "dispatch workspace 1" are now interpreted
as invalid Lua (return hl.dispatch(workspace 1)), breaking workspace
clicks and scroll navigation.

Add IPC::dispatch() that probes the running Hyprland on first call and
routes commands through the new hl.dsp Lua API when the Lua protocol is
detected, falling back to the old text format otherwise.
2026-04-29 16:41:11 -03:00
lilly-lizard 0ee4fd4aa2 added output class to dwl/mangowm allowing tags to display differently when the output is focused (for multi-monitor setups) 2026-04-14 13:47:53 +12:00
lilly-lizard e9741829d8 Merge branch 'master' into river-tags-monitor-focus 2026-04-14 08:30:00 +12:00
Arnaud Gaudard 450b6a785f Add "ignore-workspaces" option to sway/workspaces module 2026-04-12 17:22:19 +02:00