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>
96 lines
2.4 KiB
Scdoc
96 lines
2.4 KiB
Scdoc
waybar-niri-window(5)
|
|
|
|
# NAME
|
|
|
|
waybar - niri window module
|
|
|
|
# DESCRIPTION
|
|
|
|
The *window* module displays the title of the currently focused window in niri.
|
|
|
|
# CONFIGURATION
|
|
|
|
Addressed by *niri/window*
|
|
|
|
*format*: ++
|
|
typeof: string ++
|
|
default: {title} ++
|
|
The format, how information should be displayed. On {} the current window title is displayed.
|
|
|
|
*rewrite*: ++
|
|
typeof: object ++
|
|
Rules to rewrite window title. See *rewrite rules*.
|
|
|
|
*separate-outputs*: ++
|
|
typeof: bool ++
|
|
Show the active window of the monitor the bar belongs to, instead of the focused window.
|
|
|
|
*icon*: ++
|
|
typeof: bool ++
|
|
default: false ++
|
|
Option to hide the application icon.
|
|
|
|
*icon-size*: ++
|
|
typeof: integer ++
|
|
default: 24 ++
|
|
Option to change the size of the application icon.
|
|
|
|
*expand*: ++
|
|
typeof: bool ++
|
|
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
|
|
|
|
*{title}*: The current title of the focused window.
|
|
|
|
*{app_id}*: The current app ID of the focused window.
|
|
|
|
*{col}*: The current column of the focused window in the workspace.
|
|
|
|
*{max_col}*: The maximum column inside the workspace of the focused window.
|
|
|
|
# REWRITE RULES
|
|
|
|
*rewrite* is an object where keys are regular expressions and values are
|
|
rewrite rules if the expression matches. Rules may contain references to
|
|
captures of the expression.
|
|
|
|
Regular expression and replacement follow ECMA-script rules.
|
|
|
|
If no expression matches, the title is left unchanged.
|
|
|
|
Invalid expressions (e.g., mismatched parentheses) are skipped.
|
|
|
|
# EXAMPLES
|
|
|
|
```
|
|
"niri/window": {
|
|
"format": "{}",
|
|
"rewrite": {
|
|
"(.*) - Mozilla Firefox": "🌎 $1",
|
|
"(.*) - zsh": "> [$1]"
|
|
}
|
|
}
|
|
```
|
|
|
|
# STYLE
|
|
|
|
- *#window*
|
|
- *window#waybar.empty #window* When no windows are on the workspace
|
|
|
|
The following classes are applied to the entire Waybar rather than just the
|
|
window widget:
|
|
|
|
- *window#waybar.empty* When no windows are in the workspace
|
|
- *window#waybar.solo* When only one window is on the workspace
|
|
- *window#waybar.<app-id>* Where *app-id* is the app ID of the only window on
|
|
the workspace
|