Commit Graph
1431 Commits
Author SHA1 Message Date
Alex 31dfd44f0b Merge remote-tracking branch 'origin/master' into encode_icon_inside_label 2026-07-03 22:09:58 +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
Alexis Rouillard fbb9a7eccd Merge pull request #5045 from finitemonkey/master
Additional options when muted for the PulseAudio-Slider module
2026-07-03 22:09:42 +02:00
Alexis Rouillard 8e64ac59df Merge pull request #5131 from rmt/master
Force layer-shell commit after configure
2026-07-03 22:02:56 +02:00
Alex 4bf82b88a0 style(pulseaudio): clang-format audio_backend helpers 2026-07-03 22:01:20 +02:00
Alex f837615de2 Merge remote-tracking branch 'origin/master' into finitemonkey/master 2026-07-03 21:59:43 +02:00
Alex 504ebfba62 Merge remote-tracking branch 'origin/master' into finitemonkey/master 2026-07-03 21:49:16 +02:00
Alexis Rouillard ac08a7e856 Merge branch 'master' into codex-label-update-hotpath 2026-07-03 21:47:47 +02:00
Alexis Rouillard 4b7786811a Merge branch 'master' into master 2026-07-03 21:47:44 +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
Alexis Rouillard f57decf81c Merge pull request #4984 from Mervius/master
Fix timeout created by most recent gtk-layer-shell release when creating bars for multiple monitors.
2026-07-03 21:43:08 +02:00
Alexis Rouillard bc315b5a6f Merge pull request #5048 from Praczet/fix/hyprland-workspace-taskbar-hover
fix(hyprland): keep workspace hover over taskbar icons
2026-07-03 21:42:50 +02:00
Alexis Rouillard e1efa7473d Merge pull request #4992 from VlkrS/openbsd
fix: USR1/USR2 handling on OpenBSD
2026-07-03 21:41:12 +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 a02f943d8d Merge branch 'master' into fix-appearance-change-css-watching 2026-07-03 21:30:52 +02:00
Alexis Rouillard b88ed8aa15 Merge branch 'master' into master 2026-07-03 21:30:46 +02:00
Alexis Rouillard 2f3cae621f Merge branch 'master' into openbsd 2026-07-03 21:30:44 +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 3d64071bab Merge pull request #5108 from SaveTheRbtz/codex-json-parser-buffer
perf(json): parse directly from string buffers
2026-07-03 19:56:40 +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
Alexis Rouillard 2ece13775e Merge pull request #5058 from typedrifter/fix-cursor-crash
fix(amodule): prevent crash when cursor timeout fires after destruction
2026-07-03 19:54:25 +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
Johannes Haase 47b2ff09b7 feat(cursor): use cursor-shape-v1 cursor names instead of Gdk::CursorType 2026-06-16 23:27:27 +02:00
Robert M. Thomson 942411d7a1 Force layer-shell commit after configure
Assisted-by: pi:gpt-5.5
2026-06-15 10:36:29 +02: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
Alexey Ivanov 2190871a68 perf(label): skip redundant markup updates 2026-06-04 15:18:43 -07:00
Alexey Ivanov 5cce616d3d perf(json): parse directly from string buffers 2026-06-04 15:03:40 -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
Siriusuna f8cc7173ca refactor: extract utf8 truncation logic to utility
Move the UTF-8 visual-width measurement and truncation helper functions
from the mpris module to a common utility
(include/util/utf8_string.hpp and src/util/utf8_string.cpp).

This decouples string truncation and width measurement
from the mpris module, allowing other modules (like mpd) to reuse.
The helper function `utf8_truncate` (formerly `truncate` in mpris)
and `utf8_width` is exported under the `waybar::util` namespace,
while the low-level `measure_and_truncate` (formerly `utf8_truncate`)
is encapsulated in an anonymous namespace in src/util/utf8_string.cpp
to avoid unnecessary API exposure.

No functional changes were made to the mpris module's behavior.
2026-05-22 02:52:40 +08:00
Francois Lachese 876eaaf70f fix(amodule): prevent crash when cursor timeout fires after destruction 2026-05-20 15:57:38 +02:00