Commit Graph
4529 Commits
Author SHA1 Message Date
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 1058bdf0bd Merge pull request #5062 from buzz/fix/hyprland-workspaces-taskbar-hover
fix(hyprland): replace EventBox with Button for taskbar window items
2026-07-03 20:58:26 +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 439261f0e3 Merge pull request #5112 from jaschiu/patch-2
fix(niri/workspaces): segfault when setting workspace button markup
2026-07-03 20:52:09 +02:00
Alexis Rouillard dfe2d80496 Merge branch 'master' into fix/tray-hide-when-empty 2026-07-03 20:45:10 +02:00
Alexis Rouillard 9b016d8158 Merge branch 'master' into fix/hyprland-workspaces-taskbar-hover 2026-07-03 20:45:03 +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 e20864991c Merge pull request #5043
fix(hyprland/workspaces): fix IPC call when using move-to-monitor
2026-07-03 20:43:17 +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 c166d98b0d Merge pull request #5010 from Neltharion01/master
Fix connection loop in pulseaudio
2026-07-03 19:54:51 +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
Alexis Rouillard 91b0b30aac Merge pull request #5101 from SaveTheRbtz/codex-mpd-song-warning
fix(mpd): avoid false no-song warning when stopped
2026-07-03 19:52:58 +02:00
Alexis Rouillard 9dd927e8da Merge pull request #5076 from muratyalcin-ce/master
Fix (wayfire/backend): Fixed unhandled exception (out_of_range) after…
2026-07-03 19:52:25 +02:00
Alexis Rouillard 6df22ab348 Merge pull request #5154 from JuustKiwi/feature/dpms-suspend
feat(modules): pause background threads when display is asleep
2026-07-03 19:49:56 +02:00
Alexis Rouillard 48e9dd3b64 Merge pull request #5123 from martuscellifaria/master
fix(delayWorker): stop loop for static modules with no exec command
2026-07-03 19:45:40 +02:00
Alexis Rouillard 44ec750b76 Merge pull request #5121 from InetAddress/fix-battery-hotplug-crash-1
fix(battery): prevent crash when removing a hot-plugged device
2026-07-03 19:44:01 +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
martuscellifaria 0bc664a99e Readded the whitespace from the original code 2026-06-12 09:52:03 +02:00
martuscellifaria eb3669decc Rearranging code in a non-redundant way. 2026-06-12 09:48:44 +02:00
martuscellifaria 4ef828f712 Fixing CPU usage spike on Waybar 2026-06-12 09:14:04 +02:00
InetAddress 61178f7b0e Change error handling to warning
Fixes a bug where removing a hot-plugged device mid-loop causes a filesystem error that turns into a fatal runtime error that crashes waybar entirely, changed to warning instead of runtime error.
2026-06-12 04:38:10 +00:00
Jason Chiu 2d9fee144e Update privacy.cpp 2026-06-09 06:51:14 +00:00
Jason Chiu 2506196274 Update privacy.hpp 2026-06-09 06:49:41 +00:00
Jason Chiu fb829c8a8e ## fix(niri/workspaces): crash (segfault) when setting workspace button markup
### Problem
Waybar segfaults on startup when `niri/workspaces` is the only configured
module (default options). Right after the first `WorkspacesChanged` event:
 
    Thread 1 "waybar" received signal SIGSEGV
    #0 gtk_label_set_markup ()
    #1 waybar::modules::niri::Workspaces::doUpdate () at src/modules/niri/workspaces.cpp:106
 
### Root cause
[doUpdate()](cci:1://file:///home/lj/Downloads/Waybar/src/modules/niri/window.cpp:27:0-90:1) set the label markup via:
 
    static_cast<Gtk::Label*>(button.get_children()[0])->set_markup(name);
 
The button's child *is* a valid `GtkLabel`, but gtkmm's `get_children()`
returns it wrapped as a generic `Gtk::Widget` (confirmed: `dynamic_cast`
to `Gtk::Label*` yields `nullptr`). The unchecked `static_cast` then
performs an invalid downcast, producing a corrupt pointer whose `gobj()`
is garbage (`0x1`), so `gtk_label_set_markup()` dereferences it and crashes.
 
This is reliably triggered when no other module has instantiated a
`Gtk::Label` yet (so the `Gtk::Label` wrapper isn't registered), which is
exactly the case for a `niri/workspaces`-only bar. The same idiom exists in
`sway/workspaces` and `wayfire/workspaces`; it's masked there because typical
configs include other label-using modules.

### Testing
- Reproduced the crash on 0.15.0 / current `master` with a minimal
  `"modules-left": ["niri/workspaces"]` config under niri.
- After the fix: no crash; three workspace buttons render with correct
  names/labels (`niri-workspace-1/2/3`).
2026-06-09 06:20:05 +00:00
Alexey Ivanov bef7df8f08 fix(mpd): avoid false no-song warning when stopped 2026-06-05 08:40:49 -07:00
Alexey Ivanov 0cccf0d8b5 perf(mpd): avoid duplicate playing-state updates 2026-06-04 15:23:54 -07:00
Alexey Ivanov 5cce616d3d perf(json): parse directly from string buffers 2026-06-04 15:03:40 -07:00
muratyalcin-ce 5ea824c24c Use unit in config for memory module tooltip 2026-05-28 23:56:52 +03:00
muratyalcin-ce 31a161eb06 Fix (wayfire/backend): Fixed unhandled exception (out_of_range) after no valid outputs in unordered_map 2026-05-27 23:39:39 +03:00
buzz 85163c6847 fix(hyprland/workspaces): replace EventBox with Button for taskbar windows 2026-05-21 18:50:43 +02:00
Francois Lachese 876eaaf70f fix(amodule): prevent crash when cursor timeout fires after destruction 2026-05-20 15:57:38 +02:00
Desuwa 7e2afaa5b3 fix: mpd specify timer interval in seconds 2026-05-16 14:05:17 -07:00
Tom Benham 40c9d92e3d test(hyprland): fix dispatch test 2026-05-16 21:29:43 +02:00
Tom Benham cdb792af41 fix(hyprland/workspaces): fix IPC call when using "move-to-monitor": true 2026-05-16 18:03:09 +02: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
Alexis Rouillard 05945748dc Merge pull request #5013 from higorprado/fix/hyprland-lua-dispatch-protocol
fix(hyprland/workspaces): adapt dispatch commands for Lua IPC protocol
2026-05-04 23:17:38 +02:00
Alexis Rouillard 4c105f7cd7 Merge pull request #5007 from nschloe/toctou-fixes
Various toctou fixes
2026-05-03 13:27:52 +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
Neltharion a66d6b1596 Do not reconnect if connection was refused
Otherwise, it will try to reconnect recursively
2026-04-29 03:40:06 +03:00
Nico Schlömer 5af324f375 two more toctou bugs 2026-04-27 11:41:09 +02:00
Nico Schlömer 59d09c2c12 fix various toctou bugs in battery.cpp 2026-04-27 11:29:03 +02:00
Alexis Rouillard cca8dc38b6 Merge pull request #4990 from B2krobbery/fix-sni-make-unique
fix(sni): use std::make_unique for Item allocation
2026-04-22 20:50:48 +02:00