Commit Graph
26 Commits
Author SHA1 Message Date
AlexandClaude Opus 4.8 f72f84e011 fix: backward-compat + bug fixes and man-page build fix for 0.16.0
Post-0.15.0 review of the 0.15.0..HEAD range surfaced regressions and
bugs. This restores backward compatibility for existing configs/CSS,
fixes confirmed defects, and repairs the scdoc man-page build break on
master. Pango-markup tooltips are intentional and were kept.

Backward-compat restorations:
- AModule: honor legacy numeric Gdk::CursorType cursor values (int overload)
- memory: correct GiB divisor (was ~2.3% low); round bare {} placeholders
- wireplumber: scale max-volume into the linear domain so the cap works again
- idle_inhibitor: gate right/middle-click deactivate & scroll on dynamic-timeouts;
  accept both dynamic-timeout(s); widen timeout to double (no fractional truncation)
- custom: keep #custom-<name>.<class> CSS selectors working (classes on box_)
- image: don't wordexp-split a single path; fall back to the literal path
- niri/window: restore hide-when-empty (new show-empty opt-in); escape tooltip
- wlr/taskbar: plain-text tooltip when markup is disabled

Bug fixes:
- tray: fix use-after-free in onAdd; guard the watcher retry timeout
- hyprland: clamp max-windows iterator (OOB); drop duplicate language tooltip block
- niri/window: supply {col}/{max_col} args in the empty branch (fmt::format_error)
- mpris: escape {dynamic}/{player} tooltip; fix dangling player; albumArtist source
- mango: fix use-after-free race (dispatch under callback_mutex_)
- mpd: contain throwing checkErrors in noexcept idle paths (no std::terminate/UAF)
- keyboard_state: always render every lock label, with guarded defaults
- bluetooth: bound GATT ReadValue timeout, opt-in + services-resolved gating,
  preserve authoritative Battery1 percentage
- wireplumber: fix WpDevice reference leak / NULL handling
- battery, clock, dwl, wayfire, graph, custom_graph, transform, river: assorted
  crash/logic fixes

Man page / build:
- niri-workspaces: fix scdoc "indented by an amount greater than 1"
  (workspace-taskbar sub-options were mis-indented; breaks man-page build)
- document new show-empty (niri/window); correct network {txBitrate}/{rxBitrate}

Not compiled locally (no gtkmm on this host); C++ build relies on CI.
Man pages validated with scdoc 1.11.4.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 02:14:13 +02:00
Alex f7ff8eab58 Merge remote-tracking branch 'origin/master' into pr-3370
# Conflicts:
#	include/modules/idle_inhibitor.hpp
#	man/waybar-idle-inhibitor.5.scd
#	src/modules/idle_inhibitor.cpp
2026-07-04 00:54:41 +02:00
guttermonk 26922c7fbc Update idle_inhibitor.hpp 2025-10-17 20:07:28 -05:00
guttermonk 3e2ea1a870 fixed the type declarations 2025-10-17 19:58:43 -05:00
guttermonk d68f168e09 fixed the compilation error 2025-10-17 19:50:38 -05:00
guttermonk 173e7306d0 fix using the ext-idle-notify-v1 protocol 2025-10-17 19:42:53 -05:00
guttermonk c831a352f2 Added signal support and wait-for-activity bool. 2025-10-17 18:11:50 -05:00
Marcin Fabrykowski ba1988e0c2 allow dynamic timeout setting
Signed-off-by: Marcin Fabrykowski <git@fabrykowski.pl>
2025-06-02 12:50:08 +02:00
Viktar Lukashonak 61a6c00c02 Happy clang 2023-03-02 16:57:32 +03:00
Simon Plakolb 5e9bbe5c76 modules: Revert button to label 2022-11-24 13:08:16 +01:00
Alex bfa3adcfd6 Merge pull request #1120 from pinselimo/use_gtk_button_v2 2022-10-17 09:09:12 +02:00
Ian Manske cca5227210 Add config value for inhibitor default state. 2022-10-13 21:47:57 -04:00
Simon Plakolb b8322c4b4b button: Add AButton class
The AButton class is designed as full a substitute to ALabel. The
GtkButton attribute 'button_' is initialized with a label. This
label can the be referenced by the subsequent inheritors of AButton
instead of the GtkLabel attribute 'label_' of ALabel.
For convenience a GtkLabel* 'label_' attribute is added to AButton.

If the button cannot be clicked it is disabled, effectively acting
like its label predecessor.

GtkButton seems to catch one-click mouse events regardless of the
flags set on it. Therefore, 'signal_pressed' is connected to a
function creating a fake GdkEventButton* and calling 'handleToggle'
(for details on this possible bug in GTK see:
https://stackoverflow.com/questions/45334911 )

In accordance with other GtkButtons (i.e. the sway/workspace ones)
set_relief(Gtk::RELIEF_NONE) is called on the 'button_' instance.
2022-10-12 10:25:29 +02:00
Alex 7bbf7c99a3 fix: lint 2022-05-04 17:29:08 +02:00
Louis des Landes 1071b9f7c5 Add a config to set a timeout for the idle_inhibitor module 2022-04-10 22:47:52 +09:30
Alex f2fcadbf62 refactor: lint 2022-04-06 08:37:19 +02:00
Jordan Leppert 9785a89013 Making active a bool 2020-11-01 18:25:41 +00:00
Jordan Leppert a9dae931c7 Renaming idle_inhibitor_modules and idle_inhibitor_status to shorter, more convenient names. 2020-11-01 17:14:05 +00:00
Jordan Leppert 071cb86b45 Moving idle inhibitor shared stuff out of Client and into idle_inhibitor module as static members. 2020-11-01 17:09:48 +00:00
Jordan Leppert bb33427f65 Making idle_inhibitor_ private and initialised in constructor, as it was before. 2020-11-01 13:38:58 +00:00
Jordan Leppert 4889e655eb Since idle_inhibitor's have a surface, we should have one for each inhibitor module. Therefore, the status is stored on the Client, and all modules create or destroy their inhibitors depending on Client's idle_inhibitor_status. Also, when modules are destroyed they remove themselves from Client's idle_inhibitor_modules. 2020-11-01 13:33:28 +00:00
Jordan Leppert 4872091442 Draft fix for syncing idle inhibitor across outputs. The idle_inhibitor surface has been moved to Client, all instances of idle inhibitor module now use one surface between them. Any time an idle inhibitor is clicked, currently it force updates ALL modules on all outputs, this needs work. 2020-10-31 16:31:27 +00:00
Alex 90d89fe974 refactor: kill custom modules scripts en destroy 2019-04-23 15:56:38 +02:00
Alex 6ed8f94dab refactor: format code 2019-04-18 17:52:00 +02:00
Jonas 80ef63791d [bugfix] idle_inhibitor handles click events correctly
- Declare event handler in ALabel virtual so the idle_inhibitor can
  overriding them
- Handle the right click event in idle_inhibitor and call ALabel handler if needed
2019-03-03 22:02:34 +01:00
Jonas d708ce2be9 Add idle inhibitor module 2019-02-22 16:55:46 +01:00