docs(man): backfill man pages with wiki-only info (source-of-truth pass)

Port information that previously lived only in the GitHub wiki into the
authoritative scdoc man pages, so the man pages become the single source
of truth for module documentation.

33 man pages enriched (options, format replacements, actions, style
selectors, troubleshooting and implementation notes). Additions were
verified against the source; stale/incorrect wiki entries were
deliberately not ported. All pages still compile with scdoc.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Alex
2026-07-04 02:55:57 +02:00
co-authored by Claude Opus 4.8
parent 72fdf77c19
commit a3b39cfcf6
33 changed files with 375 additions and 22 deletions
+11
View File
@@ -41,6 +41,17 @@ The brightness can be controlled by dragging the slider across the bar or clicki
default: false ++ default: false ++
Enables this module to consume all left over space dynamically. Enables this module to consume all left over space dynamically.
*Note*: As well as the JSON configuration, the slider modules are special in
that they *require* styling to work. You *need* to set *min-width* and/or
*min-height* (depending on whether your slider is vertical or not) for it to
display correctly. That is a GTK detail, not an issue with Waybar. See the
*STYLE* section below.
*Warning*: If *min* is set to *0* (default), the slider can set brightness to
*0*, which may completely disable the backlight on some devices, making the
screen fully black. Consider setting a small minimum value (e.g. *10*) or
configuring brightness keybinds as a fallback.
# EXAMPLES # EXAMPLES
``` ```
+16 -1
View File
@@ -78,7 +78,13 @@ The *backlight* module displays the current backlight level.
*reverse-scrolling*: ++ *reverse-scrolling*: ++
typeof: bool ++ typeof: bool ++
Option to reverse the scroll direction. default: false ++
Option to reverse the scroll direction for devices other than a mouse (touchpad, trackpad, etc).
*reverse-mouse-scrolling*: ++
typeof: bool ++
default: false ++
Option to reverse the scroll direction for mice.
*scroll-step*: ++ *scroll-step*: ++
typeof: float ++ typeof: float ++
@@ -90,6 +96,15 @@ The *backlight* module displays the current backlight level.
default: 0.0 ++ default: 0.0 ++
The minimum brightness of the backlight. The minimum brightness of the backlight.
*tooltip*: ++
typeof: bool ++
default: true ++
Option to disable tooltip on hover.
*tooltip-format*: ++
typeof: string ++
Text to be displayed in the tooltip.
*menu*: ++ *menu*: ++
typeof: string ++ typeof: string ++
Action that popups the menu. Action that popups the menu.
+30
View File
@@ -124,6 +124,11 @@ The *battery* module displays the current capacity and state (eg. charging) of y
default: true ++ default: true ++
Option to disable tooltip on hover. Option to disable tooltip on hover.
*tooltip-format*: ++
typeof: string ++
default: {timeTo} ++
The tooltip format. See *CUSTOM FORMATS* for status/state-specific variants.
*bat-compatibility*: ++ *bat-compatibility*: ++
typeof: bool ++ typeof: bool ++
default: false ++ default: false ++
@@ -165,6 +170,12 @@ The *battery* module displays the current capacity and state (eg. charging) of y
*{health}*: The percentage of the highest-capacity battery's original maximum charge it can still hold. *{health}*: The percentage of the highest-capacity battery's original maximum charge it can still hold.
The following additional replacement is available in *tooltip-format* (and its
custom variants) only:
*{timeTo}*: Either an estimate of time until full or empty, or "Full", "Plugged"
or "Empty" depending on the current battery status.
# TIME FORMAT # TIME FORMAT
The *battery* module allows you to define how time should be formatted via *format-time*. The *battery* module allows you to define how time should be formatted via *format-time*.
@@ -184,6 +195,11 @@ The *battery* module allows one to define custom formats based on up to two fact
*format-<status>-<state>*: You can also set a custom format depending on both values. *format-<status>-<state>*: You can also set a custom format depending on both values.
The tooltip format can be customized the same way. The best fitting from
*tooltip-format*, *tooltip-format-<state>*, *tooltip-format-<status>* and
*tooltip-format-<status>-<state>* will be used (using the same logic as
*format-\**).
# STATES # STATES
- Every entry (*state*) consists of a *<name>* (typeof: *string*) and a *<value>* (typeof: *integer*). - Every entry (*state*) consists of a *<name>* (typeof: *string*) and a *<value>* (typeof: *integer*).
@@ -229,6 +245,20 @@ Where:
} }
``` ```
Custom icon set depending on the status (*format-icons* as an object):
```
"battery": {
"bat": "BAT2",
"interval": 60,
"format": "{capacity}% {icon}",
"format-icons": {
"default": ["󰂎", "󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"],
"charging": ["󰢟", "󰢜", "󰂆", "󰂇", "󰂈", "󰢝", "󰂉", "󰢞", "󰂊", "󰂋", "󰂅"]
}
}
```
# STYLE # STYLE
- *#battery* - *#battery*
+6 -1
View File
@@ -216,7 +216,12 @@ Configuration can be provided as:
# SOLVING ISSUES # SOLVING ISSUES
. On start Waybar throws an exception "error while loading shared libraries: libcava.so: cannot open shared object file: No such file or directory". . On start Waybar throws an exception "error while loading shared libraries: libcava.so: cannot open shared object file: No such file or directory".
It might happen when libcava for some reason hasn't been registered in the system. sudo ldconfig should help It might happen when libcava for some reason hasn't been registered in the system. sudo ldconfig should help.
It might also happen when Waybar was installed into /usr/local while libcava lives elsewhere. In that case:
1. Drop the local cava library: sudo rm -rfv /usr/local/include/cava /usr/local/lib64/pkgconfig/cava.pc /usr/local/lib64/libcava.so
2. Set the prefix where Waybar should be installed: meson configure build -Dprefix="/usr"
3. Build Waybar: make
4. Install Waybar into the system: sudo meson install -C build
. Waybar is starting but cava module doesn't react to the music . Waybar is starting but cava module doesn't react to the music
1. In such cases at first need to make sure usual cava application is working as well 1. In such cases at first need to make sure usual cava application is working as well
2. If so, need to comment all configuration options. Uncomment cava_config and provide the path to the working cava config 2. If so, need to comment all configuration options. Uncomment cava_config and provide the path to the working cava config
+13
View File
@@ -37,6 +37,19 @@ Waybar config to enable the module:
``` ```
# DEVELOPING CFFI MODULES
CFFI modules require a handful of functions and constants to be defined with C
linkage. The way to achieve this depends on the programming language being used
(search for FFI / Foreign Function Interface for that language).
The complete list of symbols to define can be found in the header file shipped with
Waybar at *resources/custom_modules/cffi_example/waybar_cffi_module.h*, and a full
example written in C is provided in *resources/custom_modules/cffi_example/*.
Language bindings exist for several languages, including Rust (the *waybar-cffi*
crate) and Zig.
# STYLE # STYLE
The classes and IDs are managed by the cffi dynamic library. The classes and IDs are managed by the cffi dynamic library.
+21 -2
View File
@@ -6,7 +6,16 @@ waybar - clock module
# DESCRIPTION # DESCRIPTION
*clock* module displays current date and time *clock* module displays current date and time.
There are two implementations:
- *clock*: Full-featured implementation, including the calendar and timezone
support described below. Enabled at build time when either C++20 concepts
(\_\_cpp\_concepts >= 201907, gcc >= 13) are available, or the HowardHinnant date
library <https://github.com/HowardHinnant/date> is installed.
- *simpleclock*: Fallback that provides date and time display only. Used when the
above build conditions are not met.
# FILES # FILES
@@ -27,7 +36,8 @@ $XDG_CONFIG_HOME/waybar/config ++
|[ *format* |[ *format*
:[ string :[ string
:[ *{:%H:%M}* :[ *{:%H:%M}*
:[ The format, how the date and time should be displayed. See format options below :[ The format, how the date and time should be displayed. See format options
below. Split the braces to insert literal text, e.g. *{0:%H}text{0:%M}*
|[ *timezone* |[ *timezone*
:[ string :[ string
:[ :[
@@ -295,6 +305,11 @@ View all valid format options in *strftime(3)* or have a look https://en.cpprefe
- *#clock* - *#clock*
If displaying seconds causes other modules to shift side to side, the cause is
usually proportional-width digits. If your font supports it, add
*font-feature-settings: "tnum";* to the *#clock* style (or wherever you set the bar
font) to use fixed-width numbers.
The following classes are used only inside the *{calendar}* tooltip. Their The following classes are used only inside the *{calendar}* tooltip. Their
foreground *color* is read and applied to the corresponding calendar cells in foreground *color* is read and applied to the corresponding calendar cells in
the tooltip markup: the tooltip markup:
@@ -313,6 +328,10 @@ name not valid error message try one of the following:
- check if LC_TIME is set properly (glibc) - check if LC_TIME is set properly (glibc)
- set locale to C in the config file (musl) - set locale to C in the config file (musl)
When using *clock* instead of *simpleclock*, the locale defaults to *C* regardless
of the locale settings. To override this, prepend *L* to the format string, e.g.
*{:%a %m %d}* becomes *{:L%a %m %d}*.
The locale option must be set for {calendar} to use the correct start-of-week, regardless of system locale. The locale option must be set for {calendar} to use the correct start-of-week, regardless of system locale.
## Calendar in Chinese. Alignment ## Calendar in Chinese. Alignment
+51 -3
View File
@@ -61,8 +61,11 @@ Addressed by *custom/<name>*
The format, how information should be displayed. On {text} data gets inserted. The format, how information should be displayed. On {text} data gets inserted.
*format-icons*: ++ *format-icons*: ++
typeof: array ++ typeof: array or object or string ++
Based on the set percentage, the corresponding icon gets selected. The order is *low* to *high*. If the type is an array, then based on the set percentage, the corresponding icon gets selected (the order is *low* to *high*). ++
If the type is an object, then the icon is selected according to the *alt* string from the output. ++
If the type is a string, it is pasted as is. ++
Arrays can be nested into objects: icons are then selected first according to *alt*, then percentage.
*rotate*: ++ *rotate*: ++
typeof: integer ++ typeof: integer ++
@@ -163,11 +166,18 @@ When *return-type* is set to *json*, Waybar expects the *exec*-script to output
This should look like this: This should look like this:
``` ```
{"text": "$text", "tooltip": "$tooltip", "class": "$class", "percentage": $percentage } {"text": "$text", "alt": "$alt", "tooltip": "$tooltip", "class": "$class", "percentage": $percentage }
``` ```
The whole JSON object must be printed on a single line. This can be achieved by
piping the output of your script through *jq --unbuffered --compact-output*.
The *class* parameter also accepts an array of strings. The *class* parameter also accepts an array of strings.
To have multiline tooltips, use *\\r* in your script to separate the lines. If
using PowerShell for scripting, use the standard newline operator "\`n" in double
quotes; *\\r* and *\\n* will not work.
If nothing or an invalid option is specified, Waybar expects i3blocks style output. Values are *newline* separated. If nothing or an invalid option is specified, Waybar expects i3blocks style output. Values are *newline* separated.
This should look like this: This should look like this:
@@ -179,6 +189,8 @@ $text\\n$tooltip\\n$class*
# FORMAT REPLACEMENTS # FORMAT REPLACEMENTS
*{}*: Output of the script. Equivalent to *{text}*.
*{text}*: Output of the script. *{text}*: Output of the script.
*{alt}*: The *alt* value from a json return type. *{alt}*: The *alt* value from a json return type.
@@ -187,6 +199,11 @@ $text\\n$tooltip\\n$class*
*{icon}*: An icon from 'format-icons' according to percentage. *{icon}*: An icon from 'format-icons' according to percentage.
The *{}* placeholder is special: it automatically displays the text output of your
script, but it cannot be combined with other placeholders like *{icon}* in the same
format string. To display both an icon and text, use *{icon}* together with *{text}*
explicitly (e.g. *"format": "{icon} {text}"*).
# EXAMPLES # EXAMPLES
## Spotify: ## Spotify:
@@ -264,3 +281,34 @@ Under the premise that interval is not defined, you can use the signal and updat
- *<class>* can be set by the script. For more information see *return-type* - *<class>* can be set by the script. For more information see *return-type*
- *.flat* and *.text-button* are always applied to the module's label. - *.flat* and *.text-button* are always applied to the module's label.
- *.image-button* is always applied to the module's image (see *image-path*/*image-name*). - *.image-button* is always applied to the module's image (see *image-path*/*image-name*).
# CONTINUOUS SCRIPTS
The *exec* script may be continuous (i.e. contain some kind of infinite loop). The
display is updated for each new line of data printed on stdout (following the chosen
*return-type*). The *interval* option does not apply to a continuous script; use
*restart-interval* instead to restart the script if it stops after some time.
Be aware that some languages buffer their output. If your module displays nothing
even though your script works as expected, the output may be held in a buffer. Look
up how to flush the output buffer for your language of choice (for example, in Ruby
call *$stdout.flush* after each print).
# OUTPUT NAME
The *exec* script is run with the *WAYBAR_OUTPUT_NAME* environment variable set to
the name of the output (monitor) the bar is displayed on.
# TROUBLESHOOTING
*Self-looping module does not show up*
If your module is self-looping and it does not even show up in the bar, check that:
- Its configuration does *not* include an *interval* parameter.
- Output to stdout is not buffered.
*Custom json class not displayed*
If a class set in your custom script is not picked up by *style.css*, ensure that
the output carrying the most variables is emitted first.
+5 -1
View File
@@ -8,6 +8,9 @@ waybar - dwl tags module
The *tags* module displays the current state of tags in dwl. The *tags* module displays the current state of tags in dwl.
Using this module requires patching dwl with the IPC patch
<https://codeberg.org/dwl/dwl-patches/wiki/ipc>.
# CONFIGURATION # CONFIGURATION
Addressed by *dwl/tags* Addressed by *dwl/tags*
@@ -15,7 +18,8 @@ Addressed by *dwl/tags*
*num-tags*: ++ *num-tags*: ++
typeof: uint ++ typeof: uint ++
default: 9 ++ default: 9 ++
The number of tags that should be displayed. Max 32. The number of tags that should be displayed. Max 32. This should match the
number of tags configured in dwl.
*tag-labels*: ++ *tag-labels*: ++
typeof: array ++ typeof: array ++
+3
View File
@@ -8,6 +8,9 @@ waybar - dwl window module
The *window* module displays the title of the currently focused window in DWL The *window* module displays the title of the currently focused window in DWL
Using this module requires patching dwl with the IPC patch
<https://codeberg.org/dwl/dwl-patches/wiki/ipc>.
# CONFIGURATION # CONFIGURATION
Addressed by *dwl/window* Addressed by *dwl/window*
+3
View File
@@ -8,6 +8,9 @@ waybar - wlr workspaces module
The *workspaces* module displays the currently used workspaces in wayland compositor. The *workspaces* module displays the currently used workspaces in wayland compositor.
To use this module, your compositor must implement the *ext-workspace-v1*
Wayland protocol.
# CONFIGURATION # CONFIGURATION
Addressed by *ext/workspaces* Addressed by *ext/workspaces*
+1 -1
View File
@@ -54,7 +54,7 @@ Feral Gamemode optimizations.
*icon-size*: ++ *icon-size*: ++
typeof: unsigned integer ++ typeof: unsigned integer ++
default: 20 ++ default: 20 ++
Defines the size of the icons. Defines the size of the icons. Set to *0* for auto size.
*icon-spacing*: ++ *icon-spacing*: ++
typeof: unsigned integer ++ typeof: unsigned integer ++
+4
View File
@@ -17,6 +17,10 @@ Addressed by *hyprland/window*
default: {title} ++ default: {title} ++
The format, how information should be displayed. On {} the current window title is displayed. The format, how information should be displayed. On {} the current window title is displayed.
*max-length*: ++
typeof: integer ++
The maximum length in character the module should display.
*rewrite*: ++ *rewrite*: ++
typeof: object ++ typeof: object ++
Rules to rewrite window title. See *rewrite rules*. Rules to rewrite window title. See *rewrite rules*.
+29 -1
View File
@@ -139,7 +139,8 @@ This setting is ignored if *workspace-taskbar.enable* is set to true.
*persistent-workspaces*: ++ *persistent-workspaces*: ++
typeof: object ++ typeof: object ++
default: empty ++ default: empty ++
Lists workspaces that should always be shown, even when they do not exist. Keys are workspace names and values are arrays of output names on which the workspace should be shown (an empty array means all outputs). See the examples below. Lists workspaces that should always be shown, even when they do not exist. Keys are workspace names and values are arrays of output names on which the workspace should be shown (an empty array means all outputs). See the examples below. ++
Note: for persistent workspaces to actually work you must also declare them in your Hyprland config, e.g. *workspace = 1, monitor:eDP-1, persistent:true*.
*all-outputs*: ++ *all-outputs*: ++
typeof: bool ++ typeof: bool ++
@@ -219,6 +220,32 @@ This setting is ignored if *workspace-taskbar.enable* is set to true.
*{windows}*: The windows in the workspace, formatted according to *window-rewrite* and joined with *format-window-separator*. *{windows}*: The windows in the workspace, formatted according to *window-rewrite* and joined with *format-window-separator*.
# WINDOW REWRITE RULES
The rules in *window-rewrite* are regexes that may match against a window's
class, title, or both. There are four categories of rule, distinguished by how
they are written in the config:
[- *Rule*
:- *Category*
|[ *something*
:[ Vague
|[ *class<something>*
:[ Class-only
|[ *title<something>*
:[ Title-only
|[ *class<something1> title<something2>*
:[ Hybrid
When the config contains only "vague" rules, they are matched against window
*classes* only. This is both for backwards compatibility and for performance:
matching against the title requires listening to window title changes via
Hyprland's IPC, which is unnecessary when no title rule is in use.
When the config contains *at least one* "title-only" or "hybrid" rule, then all
"vague" rules match against *both* class and title. This lets you define vague
rules where it does not matter whether the class or the title matched.
# ICONS # ICONS
Additional to workspace name matching, the following *format-icons* can be set. Additional to workspace name matching, the following *format-icons* can be set.
@@ -229,6 +256,7 @@ Additional to workspace name matching, the following *format-icons* can be set.
- *empty*: Will be shown on non-active, non-special empty persistent workspaces - *empty*: Will be shown on non-active, non-special empty persistent workspaces
- *visible*: Will be shown on workspaces that are visible but not active. For example: this is useful if you want your visible workspaces on other monitors to have the same look as active. - *visible*: Will be shown on workspaces that are visible but not active. For example: this is useful if you want your visible workspaces on other monitors to have the same look as active.
- *persistent*: Will be shown on non-empty persistent workspaces - *persistent*: Will be shown on non-empty persistent workspaces
- *urgent*: Will be shown on non-active urgent workspaces
# EXAMPLES # EXAMPLES
+23
View File
@@ -100,6 +100,29 @@ $path\\n$tooltip
} }
``` ```
Using *exec* to fetch the image via a script:
```
"image#album-art": {
"exec": "~/.config/waybar/custom/spotify/album_art.sh",
"size": 32,
"interval": 30
}
```
Where *album\_art.sh* looks like this:
```
#!/bin/bash
album_art=$(playerctl -p spotify metadata mpris:artUrl)
if [[ -z $album_art ]]; then
# spotify is dead, we should die too.
exit
fi
curl -s "${album_art}" --output "/tmp/cover.jpeg"
echo "/tmp/cover.jpeg"
```
# STYLE # STYLE
- *#image* - *#image*
+7 -1
View File
@@ -6,7 +6,13 @@ waybar - JACK module
# DESCRIPTION # DESCRIPTION
The *jack* module displays the current state of the JACK server. The *jack* module displays the current state of the JACK server. It supports both
the JACK2 <https://github.com/jackaudio/jack2> and PipeWire <https://pipewire.org/>
implementations of the JACK API.
PipeWire users are advised to run at least v0.3.57; earlier versions cause the
Waybar client to hang indefinitely if the server shuts down while the module is
running.
# CONFIGURATION # CONFIGURATION
+2 -1
View File
@@ -8,7 +8,8 @@ waybar - keyboard-state module
The *keyboard-state* module displays the state of number lock, caps lock, and scroll lock. The *keyboard-state* module displays the state of number lock, caps lock, and scroll lock.
You must be a member of the input group to use this module. You must be a member of the input group to use this module. Add yourself with
*usermod -a -G input <username>* (as root), then reboot.
# CONFIGURATION # CONFIGURATION
+5
View File
@@ -84,6 +84,11 @@ Addressed by *memory*
default: true ++ default: true ++
Option to disable tooltip on hover. Option to disable tooltip on hover.
*tooltip-format*: ++
typeof: string ++
default: {used:0.1f}GiB used ++
The format of the tooltip shown on hover. Supports the same replacements as *format*.
*menu*: ++ *menu*: ++
typeof: string ++ typeof: string ++
Action that popups the menu. Action that popups the menu.
+4 -2
View File
@@ -8,17 +8,19 @@ waybar - mpd module
The *mpd* module displays information about a running "Music Player Daemon" instance. The *mpd* module displays information about a running "Music Player Daemon" instance.
Note that Waybar must be compiled with MPD support in order to use this module.
# CONFIGURATION # CONFIGURATION
Addressed by *mpd* Addressed by *mpd*
*server*: ++ *server*: ++
typeof: string ++ typeof: string ++
The network address or Unix socket path of the MPD server. If empty, connect to the default host. The network address or Unix socket path of the MPD server. If empty, connect to the default host (`MPD_HOST`).
*port*: ++ *port*: ++
typeof: integer ++ typeof: integer ++
The port MPD listens to. If empty, use the default port. The port MPD listens to. If empty, use the default port (`MPD_PORT`).
*password*: ++ *password*: ++
typeof: string ++ typeof: string ++
+4
View File
@@ -56,6 +56,10 @@ Addressed by *network*
typeof: string ++ typeof: string ++
This format is used when rfkill is blocking wlan interfaces. This format is used when rfkill is blocking wlan interfaces.
*format-alt*: ++
typeof: string ++
On click, toggle between this format and the regular format. The click button is set with *format-alt-click* (defaults to the left button).
*format-icons*: ++ *format-icons*: ++
typeof: array/object ++ typeof: array/object ++
Based on the current signal strength, the corresponding icon gets selected. ++ Based on the current signal strength, the corresponding icon gets selected. ++
+12
View File
@@ -44,6 +44,18 @@ $XDG_CONFIG_HOME/waybar/config
# FORMAT REPLACEMENTS
*{profile}*: Active profile full name.
*{icon}*: Icon (from *format-icons*) representing the active profile.
*{cpu_driver}*: The CPU driver reported by recent power-profiles-daemon versions. *(tooltip)*
*{platform_driver}*: The platform driver reported by recent power-profiles-daemon versions. *(tooltip)*
*{driver}*: Kept for backward compatibility: resolves to the legacy single driver on older daemons and falls back to the CPU driver on recent ones. *(tooltip)*
# CONFIGURATION EXAMPLES # CONFIGURATION EXAMPLES
Compact display (default config): Compact display (default config):
+3 -2
View File
@@ -19,7 +19,7 @@ the screen or playing audio.
*icon-size*: ++ *icon-size*: ++
typeof: integer ++ typeof: integer ++
default: 20 ++ default: 20 ++
The size of each privacy icon. The size of each privacy icon. Set to *0* for auto size.
*transition-duration*: ++ *transition-duration*: ++
typeof: integer ++ typeof: integer ++
@@ -57,7 +57,8 @@ the screen or playing audio.
*icon-name*: ++ *icon-name*: ++
typeof: string ++ typeof: string ++
If set, changes the modules icon. If set, changes the modules icon. Accepts any valid GTK icon name. ++
Note: the icon is only visible when the resource is actively in use; the item is hidden when idle.
*tooltip*: ++ *tooltip*: ++
typeof: bool ++ typeof: bool ++
+6
View File
@@ -87,6 +87,12 @@ The volume can be controlled by dragging the slider across the bar or clicking o
# STYLE # STYLE
Unlike most modules, the slider modules *require* styling to display correctly.
In particular you *need* to set *min-width* and/or *min-height* (depending on
whether the slider is vertical or horizontal) on the *trough* node, otherwise
the slider renders too small to be usable. This is a GTK detail, not a Waybar
issue.
The slider is a component with multiple CSS Nodes, of which the following are exposed: The slider is a component with multiple CSS Nodes, of which the following are exposed:
*#pulseaudio-slider*: ++ *#pulseaudio-slider*: ++
+7 -1
View File
@@ -108,6 +108,10 @@ Additionally, you can control the volume by scrolling *up* or *down* while the c
default: true ++ default: true ++
Option to disable tooltip on hover. Option to disable tooltip on hover.
*tooltip-format*: ++
typeof: string ++
The format of the tooltip shown on hover. When unset, the tooltip shows the current sink's description.
*max-volume*: ++ *max-volume*: ++
typeof: integer ++ typeof: integer ++
default: 100 ++ default: 100 ++
@@ -115,7 +119,7 @@ Additionally, you can control the volume by scrolling *up* or *down* while the c
*ignored-sinks*: ++ *ignored-sinks*: ++
typeof: array ++ typeof: array ++
Sinks in this list will not be shown as active sink by Waybar. Entries should be the sink's description field. Sinks in this list will not be shown as active sink by Waybar. Entries should be the sink's description field. Use *pactl list sinks* to find the correct description.
*sink-mapping*: ++ *sink-mapping*: ++
typeof: object ++ typeof: object ++
@@ -164,6 +168,8 @@ The following strings for *format-icons* are supported.
- the device name - the device name
The device name looks something like *alsa\_output.pci-0000\_00\_1f.3.analog-stereo*. You can find it with a PulseAudio frontend such as *pacmd list-sinks* or *pamixer --list-sinks*.
If they are found in the current PulseAudio port name, the corresponding icons will be selected. If they are found in the current PulseAudio port name, the corresponding icons will be selected.
- *default* (Shown, when no other port is found) - *default* (Shown, when no other port is found)
+17
View File
@@ -52,6 +52,23 @@ Addressed by *river/tags*
} }
``` ```
Sticky tag: this enables 5 tags and, to support a sticky tag (tag 32),
*set-tags* is given bitmasks with the 32nd bit set so that tag stays selected
whichever button is clicked.
```
"river/tags": {
"num-tags": 5,
"set-tags": [
2147483649,
2147483650,
2147483652,
2147483656,
2147483664
]
}
```
# STYLE # STYLE
- *#tags button* - *#tags button*
+5
View File
@@ -49,6 +49,11 @@ Addressed by *river/window*
typeof: string ++ typeof: string ++
Command to execute when you right-click on the module. Command to execute when you right-click on the module.
*tooltip*: ++
typeof: bool ++
default: true ++
Option to enable tooltip on hover. The tooltip shows the same text as the module label.
*menu*: ++ *menu*: ++
typeof: string ++ typeof: string ++
Action that popups the menu. Action that popups the menu.
+1 -1
View File
@@ -14,7 +14,7 @@ apply a class when the value matches the declared state value.
Every entry (*state*) consists of a *<name>* (typeof: *string*) and a *<value>* (typeof: *integer*). Every entry (*state*) consists of a *<name>* (typeof: *string*) and a *<value>* (typeof: *integer*).
- The state can be addressed as a CSS class in the *style.css*. The name of the CSS class is the *<name>* of the state. - The state can be addressed as a CSS class in the *style.css*. The name of the CSS class is the *<name>* of the state.
Each class gets activated when the current value is equal to or less than the configured *<value>* for the *battery* module, or equal to or greater than the configured *<value>* for all other modules. Each class gets activated when the current value is equal to or less than the configured *<value>* for the *battery*, *pulseaudio* and *wireplumber* modules, or equal to or greater than the configured *<value>* for all other modules.
- Also, each state can have its own *format*. - Also, each state can have its own *format*.
Those can be configured via *format-<name>*, or if you want to differentiate a bit more, as *format-<status>-<state>*. Those can be configured via *format-<name>*, or if you want to differentiate a bit more, as *format-<status>-<state>*.
+13
View File
@@ -32,6 +32,18 @@ Addressed by *sway/language*
default: true ++ default: true ++
Option to disable tooltip on hover. Option to disable tooltip on hover.
*on-click*: ++
typeof: string ++
Command to execute when clicked on the module.
*on-click-middle*: ++
typeof: string ++
Command to execute when you middle clicked on the module using mousewheel.
*on-click-right*: ++
typeof: string ++
Command to execute when you right clicked on the module.
*menu*: ++ *menu*: ++
typeof: string ++ typeof: string ++
Action that popups the menu. Action that popups the menu.
@@ -67,6 +79,7 @@ Addressed by *sway/language*
``` ```
"sway/language": { "sway/language": {
"format": "{}", "format": "{}",
"on-click": "swaymsg input type:keyboard xkb_switch_layout next",
}, },
"sway/language": { "sway/language": {
+8
View File
@@ -173,3 +173,11 @@ window widget:
- *window#waybar.tabbed* When there is more than one window in the workspace and the workspace layout is tabbed - *window#waybar.tabbed* When there is more than one window in the workspace and the workspace layout is tabbed
- *window#waybar.tiled* When there is more than one window in the workspace and the workspace layout is splith or splitv - *window#waybar.tiled* When there is more than one window in the workspace and the workspace layout is splith or splitv
- *window#waybar.<app_id>* Where *app_id* is the app_id or *instance* name like (*chromium*) of the only window in the workspace - *window#waybar.<app_id>* Where *app_id* is the app_id or *instance* name like (*chromium*) of the only window in the workspace
These additional classes are applied to the whole Waybar (an element with the
name *window* and the id *waybar*) rather than to the module widget itself (an
element with the name *box* and the id *window*). In most cases you therefore
want to target *window#waybar.<stylename> #window* to style the module.
Switching layouts does not change the style unless the focus is changed. Sway
does not provide events for layout switching and the module does not poll.
+23
View File
@@ -156,6 +156,8 @@ Addressed by *temperature*
*{temperatureK}*: Temperature in Kelvin. *{temperatureK}*: Temperature in Kelvin.
*{icon}*: Icon, as selected from *format-icons* based on the current temperature.
# EXAMPLES # EXAMPLES
``` ```
@@ -173,3 +175,24 @@ Addressed by *temperature*
- *#temperature* - *#temperature*
- *#temperature.warning* - *#temperature.warning*
- *#temperature.critical* - *#temperature.critical*
# TROUBLESHOOTING
## Finding your thermal zone
To list all the thermal zone types, run:
```
for i in /sys/class/thermal/thermal_zone*; do echo "$i: $(<$i/type)"; done
```
## Finding an hwmon path
If you do not have a thermal zone, use *sensors* to find the preferred
temperature source, then run:
```
for i in /sys/class/hwmon/hwmon*/temp*_input; do echo "$(<$(dirname $i)/name): $(cat ${i%_*}_label 2>/dev/null || echo $(basename ${i%_*})) $(readlink -f $i)"; done
```
to find the path to the desired file, then set it in *hwmon-path*.
+20 -3
View File
@@ -55,6 +55,9 @@ Addressed by *tray*
Key: name of item. ++ Key: name of item. ++
Value: integer, higher value means to place this item to the right. Value: integer, higher value means to place this item to the right.
Note: custom *icons* only work with actual image files, not font-based icons. They
might not work for some Electron apps (see https://github.com/electron/electron/issues/40936).
*ignore-list*: ++ *ignore-list*: ++
typeof: array ++ typeof: array ++
List of strings used to hide matching tray items. An item is hidden when any string in the list is found (as a substring) in the item's bus name, category, icon name, id or title. List of strings used to hide matching tray items. An item is hidden when any string in the list is found (as a substring) in the item's bus name, category, icon name, id or title.
@@ -80,6 +83,20 @@ Addressed by *tray*
# STYLE # STYLE
- *#tray* - *#tray*
- *#tray > .passive* - *#tray menu* for the context menu
- *#tray > .active* - *#tray widget>image* for icons
- *#tray > .needs-attention* - *#tray > .passive* for icons with status *Passive*
- *#tray > .active* for icons with status *Active*
- *#tray > .needs-attention* for icons with status *NeedsAttention*
# TRAY APPLETS
The following applets are known to work with the *tray* module:
- *NetworkManager*: install networkmanager, enable it with
*systemctl enable NetworkManager.service*, and start the applet with
*nm-applet --indicator*.
- *Blueman*: enable the Bluetooth daemon, install blueman, and start
*blueman-applet*.
- *Electron apps*: apps like Slack, Telegram, Caprine and Discord should work
out of the box.
+1 -1
View File
@@ -26,7 +26,7 @@ compatible devices in the tooltip.
*icon-size*: ++ *icon-size*: ++
typeof: integer ++ typeof: integer ++
default: 20 ++ default: 20 ++
Defines the size of the icons. Defines the size of the icons. Set to *0* for automatic sizing.
*format*: ++ *format*: ++
typeof: string ++ typeof: string ++
+14
View File
@@ -36,6 +36,10 @@ The *wireplumber* module displays the current volume reported by WirePlumber.
typeof: string ++ typeof: string ++
The format used for the *{format_source}* sub-string when the source (microphone) is muted. The format used for the *{format_source}* sub-string when the source (microphone) is muted.
*format-icons*: ++
typeof: array ++
Based on the current volume, the corresponding icon gets selected. The order is *low* to *high*.
*node-type*: ++ *node-type*: ++
typeof: string ++ typeof: string ++
default: *Audio/Sink* ++ default: *Audio/Sink* ++
@@ -90,6 +94,14 @@ The *wireplumber* module displays the current volume reported by WirePlumber.
default: cubic_percent default: cubic_percent
The scale to use for the scrolling volume change. Options are 'linear', 'db', 'cubic', and 'cubic_percent'. The scale to use for the scrolling volume change. Options are 'linear', 'db', 'cubic', and 'cubic_percent'.
*reverse-scrolling*: ++
typeof: bool ++
Option to reverse the scroll direction for touchpads.
*reverse-mouse-scrolling*: ++
typeof: bool ++
Option to reverse the scroll direction for mice.
*on-click*: ++ *on-click*: ++
typeof: string ++ typeof: string ++
Command to execute when clicked on the module. Command to execute when clicked on the module.
@@ -142,6 +154,8 @@ The *wireplumber* module displays the current volume reported by WirePlumber.
*{volume_db}*: Volume in decibel scale as float. *{volume_db}*: Volume in decibel scale as float.
*{icon}*: Icon, as defined in *format-icons*.
*{node_name}*: The node's nickname as reported by WirePlumber (*node.nick* property) *{node_name}*: The node's nickname as reported by WirePlumber (*node.nick* property)
*{source_volume}*: Source (microphone) volume in percentage, cubic scale as integer. *{source_volume}*: Source (microphone) volume in percentage, cubic scale as integer.
+7
View File
@@ -135,6 +135,11 @@ Addressed by *wlr/taskbar*
*{short_state}*: The state (minimize == m, maximized == M, active == A, fullscreen == F) represented as one character of the application. *{short_state}*: The state (minimize == m, maximized == M, active == A, fullscreen == F) represented as one character of the application.
As with all format replacements in Waybar, a length limit such as *{title:.15}* is
measured in bytes, not characters. This may produce invalid text if a multi-byte
character is split, or (when *markup* is true) if the truncation cuts through a
value that must be escaped in XML.
# CLICK ACTIONS # CLICK ACTIONS
*activate*: Bring the application into foreground. *activate*: Bring the application into foreground.
@@ -157,6 +162,8 @@ captures of the expression.
Regular expression and replacement follow ECMA-script rules. Regular expression and replacement follow ECMA-script rules.
An expression must match the format output *fully* to trigger its replacement.
If no expression matches, the format output is left unchanged. If no expression matches, the format output is left unchanged.
Invalid expressions (e.g., mismatched parentheses) are skipped. Invalid expressions (e.g., mismatched parentheses) are skipped.