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.6 KiB
Plaintext
96 lines
2.6 KiB
Plaintext
waybar-styles(5)
|
|
|
|
# NAME
|
|
|
|
waybar-styles - using stylesheets for waybar
|
|
|
|
# DESCRIPTION
|
|
|
|
Waybar uses Cascading Style Sheets (CSS) to configure its appearance.
|
|
|
|
When the system appearance is light, Waybar first looks for *style-light.css*.
|
|
When the system appearance is dark, Waybar first looks for *style-dark.css*.
|
|
If no appearance-specific stylesheet is found, it falls back to *style.css*.
|
|
|
|
Waybar uses the first file found in this search order for each stylesheet name:
|
|
|
|
- *$XDG_CONFIG_HOME/waybar/<stylesheet>*
|
|
- *~/.config/waybar/<stylesheet>*
|
|
- *~/waybar/<stylesheet>*
|
|
- */etc/xdg/waybar/<stylesheet>*
|
|
- *@sysconfdir@/xdg/waybar/<stylesheet>*
|
|
|
|
For example, a light theme is loaded from the first available file among:
|
|
|
|
- *$XDG_CONFIG_HOME/waybar/style-light.css*
|
|
- *~/.config/waybar/style-light.css*
|
|
- *~/waybar/style-light.css*
|
|
- */etc/xdg/waybar/style-light.css*
|
|
- *@sysconfdir@/xdg/waybar/style-light.css*
|
|
|
|
If no file is found there, Waybar repeats the same search using *style.css*.
|
|
|
|
# EXAMPLE
|
|
|
|
An example user-controlled stylesheet that just changes the color of the clock to be green on black, while keeping the rest of the system config the same would be:
|
|
|
|
```
|
|
@import url("file:///etc/xdg/waybar/style.css");
|
|
|
|
#clock {
|
|
background: #000000;
|
|
color: #00ff00;
|
|
}
|
|
```
|
|
|
|
## Hover-effect
|
|
|
|
You can apply special styling to any module for when the cursor hovers it.
|
|
|
|
```
|
|
#clock:hover {
|
|
background-color: #ffffff;
|
|
}
|
|
```
|
|
|
|
## Setting cursor style
|
|
|
|
Most, if not all, module types support setting the `cursor` option. This is
|
|
configured in your `config.jsonc`. If set to `false`, when hovering the module a
|
|
"pointer" (as commonly known from web CSS styling `cursor: pointer`) style cursor
|
|
will not be shown. Default behavior is to indicate an interaction event is
|
|
available.
|
|
|
|
If set to a string value, it must be a valid cursor name
|
|
(e.g. `"pointer"`, `"default"`, `"grab"`, `"text"`, `"crosshair"`, etc.),
|
|
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:
|
|
|
|
```
|
|
"custom/my-custom-module": {
|
|
...
|
|
"cursor": false,
|
|
}
|
|
```
|
|
|
|
Example of setting the cursor type to `"grab"`:
|
|
|
|
```
|
|
"custom/my-custom-module": {
|
|
...
|
|
"cursor": "grab",
|
|
}
|
|
```
|
|
|
|
# SEE ALSO
|
|
|
|
- *waybar(5)*
|