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>
This commit is contained in:
@@ -76,7 +76,7 @@ screensaver, also known as "presentation mode".
|
||||
typeof: double ++
|
||||
The number of minutes the inhibition should last.
|
||||
|
||||
*timeout_step*: ++
|
||||
*timeout-step*: ++
|
||||
typeof: double ++
|
||||
default: 10 ++
|
||||
The number of minutes to add or subtract when scrolling (when dynamic timeouts are enabled).
|
||||
|
||||
@@ -196,9 +196,9 @@ Addressed by *network*
|
||||
|
||||
*{bandwidthTotalBytes}*: Instant total speed in bytes/seconds.
|
||||
|
||||
*{tx_bitrate}*: Link transmit bitrate (e.g., 866.7 Mb/s).
|
||||
*{txBitrate}*: Link transmit bitrate (e.g., 866.7 Mb/s).
|
||||
|
||||
*{rx_bitrate}*: Link receive bitrate (e.g., 866.7 Mb/s).
|
||||
*{rxBitrate}*: Link receive bitrate (e.g., 866.7 Mb/s).
|
||||
|
||||
*{linkSpeed}*: Ethernet link speed.
|
||||
|
||||
|
||||
@@ -40,6 +40,11 @@ Addressed by *niri/window*
|
||||
default: false ++
|
||||
Enables this module to consume all left over space dynamically.
|
||||
|
||||
*show-empty*: ++
|
||||
typeof: bool ++
|
||||
default: false ++
|
||||
When no window is focused (empty workspace or all windows closed), keep the module visible and render *format* with empty {title}/{app_id} and {col}/{max_col} set to -1. When false (the default), the module is hidden while no window is focused.
|
||||
|
||||
# FORMAT REPLACEMENTS
|
||||
|
||||
See the output of "niri msg windows" for examples
|
||||
|
||||
@@ -96,15 +96,15 @@ If none of the sorting options are enabled, workspaces keep their output/index o
|
||||
typeof: object ++
|
||||
Contains settings for the workspace taskbar, which displays app icons within each workspace.
|
||||
|
||||
*enable*: ++
|
||||
typeof: bool ++
|
||||
default: false ++
|
||||
Enables the workspace taskbar mode.
|
||||
*enable*: ++
|
||||
typeof: bool ++
|
||||
default: false ++
|
||||
Enables the workspace taskbar mode.
|
||||
|
||||
*icon-size*: ++
|
||||
typeof: int ++
|
||||
default: 18 ++
|
||||
Size of the icons in the workspace taskbar.
|
||||
*icon-size*: ++
|
||||
typeof: int ++
|
||||
default: 18 ++
|
||||
Size of the icons in the workspace taskbar.
|
||||
|
||||
*ignore-workspaces*: ++
|
||||
typeof: array ++
|
||||
|
||||
@@ -67,6 +67,11 @@ see the cursor-shape-v1 protocol for all possible cursor types:
|
||||
https://wayland.app/protocols/cursor-shape-v1#wp_cursor_shape_device_v1:enum:shape.
|
||||
Depending on the compositor and cursor theme used, cursors not listed in the protocol may also work.
|
||||
|
||||
Prior to 0.16.0 the `cursor` option accepted a numeric _Gdk::CursorType_ value
|
||||
(e.g. `"cursor": 8`). Numeric values are deprecated but still honored for
|
||||
backward compatibility; a cursor-shape-v1 name string (e.g. `"grab"`) is now
|
||||
preferred.
|
||||
|
||||
Example of disabling the cursor on a custom module:
|
||||
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user