A full man<->code consistency audit surfaced options, format placeholders
and CSS classes that were implemented but undocumented, documented but not
implemented (some causing fmt crashes when copied from examples), and
defaults that disagreed with the code. This aligns the docs with the code
and fixes a few genuine code gaps.
Docs:
- Add the missing waybar-user(5) man page (and register it in meson.build)
- Document previously-undocumented options/placeholders/CSS across many
modules (custom image-path/image-name/icon-size, graph_type/width/
datapoints; battery smooth-power; wireplumber format-source/only-physical;
mpris {position}/prefer-album-artist; network {signalStrengthApp}/compact
bandwidth; pulseaudio {source_volume}/{source_desc}; upower {temperature}/
{model}/{native-path}; wwan {power_state}/{imei}; tray ignore-list; and
many CSS state classes: .sink-muted, .source-muted, .workspace-hover, etc.)
- Correct documented defaults to match the code (hyprland format {name},
gamemode {count}, cpu-graph interval 5, cava input_delay 4, niri taskbar
icon-size 16, disk/gps/wayfire formats, menu-actions object type, ...)
- Remove placeholders/options that do not apply (custom-graph {icon}/format/
format-icons/rotate) and fix crashing examples (wwan {mode}, gps
format-no-fix); note cava background/foreground/continuous_rendering are
cava-config-file options
Code:
- bluetooth: accept the documented `controller` key as a synonym of
`controller-alias` (the option was silently ignored)
- mango/workspaces: supply the documented `{name}` fmt arg (was missing ->
fmt::format threw)
- privacy: read `tooltip` as a bool (was guarded on isString(), so the
documented `tooltip: false` was silently ignored)
All man pages validated with scdoc 1.11.4. Not compiled locally (no gtkmm);
C++ build relies on CI.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
228 lines
6.6 KiB
Scdoc
228 lines
6.6 KiB
Scdoc
waybar-wlr-taskbar(5)
|
|
|
|
# NAME
|
|
|
|
waybar - wlr taskbar module
|
|
|
|
# DESCRIPTION
|
|
|
|
The *taskbar* module displays the currently open applications. This module requires
|
|
a compositor that implements the foreign-toplevel-manager interface.
|
|
|
|
# CONFIGURATION
|
|
|
|
Addressed by *wlr/taskbar*
|
|
|
|
*all-outputs*: ++
|
|
typeof: bool ++
|
|
default: false ++
|
|
If set to false applications on the waybar's current output will be shown. Otherwise, all applications are shown.
|
|
|
|
*bar-css-states*: ++
|
|
typeof: bool ++
|
|
default: false ++
|
|
If set to true, application state is exposed as CSS classes on the Waybar
|
|
window. Maximized and fullscreen state is aggregated across applications
|
|
known to belong to the active workspace. See *Bar state style* below.
|
|
|
|
*format*: ++
|
|
typeof: string ++
|
|
default: {icon} ++
|
|
The format, how information should be displayed.
|
|
|
|
*icon-theme*: ++
|
|
typeof: array|string ++
|
|
The names of the icon-themes that should be used to find an icon. The list will be traversed from left to right. If omitted, the system default will be used.
|
|
|
|
*icon-size*: ++
|
|
typeof: integer ++
|
|
default: 16 ++
|
|
The size of the icon.
|
|
|
|
*markup*: ++
|
|
typeof: bool ++
|
|
default: false ++
|
|
If set to true, pango markup will be accepted in format and tooltip-format.
|
|
|
|
*tooltip*: ++
|
|
typeof: bool ++
|
|
default: true ++
|
|
If set to false no tooltip will be shown.
|
|
|
|
*tooltip-format*: ++
|
|
typeof: string ++
|
|
default: {title} ++
|
|
The format, how information in the tooltip should be displayed.
|
|
|
|
*active-first*: ++
|
|
typeof: bool ++
|
|
default: false ++
|
|
If set to true, always reorder the tasks in the taskbar so that the currently active one is first. Otherwise don't reorder.
|
|
|
|
*active-only*: ++
|
|
typeof: bool ++
|
|
default: false ++
|
|
If set to true, only the currently active application button is shown.
|
|
Other applications remain tracked and reappear when activated.
|
|
|
|
*sort-by-app-id*: ++
|
|
typeof: bool ++
|
|
default: false ++
|
|
If set to true, group tasks by their app_id. Cannot be used with 'active-first'.
|
|
|
|
*homogeneous*: ++
|
|
typeof: bool ++
|
|
default: false ++
|
|
If set to true, distribute every task button evenly across the taskbar's allocated width. Buttons will automatically resize so that 'N' visible tasks each take '1/N' of the width.
|
|
|
|
*justify*: ++
|
|
typeof: string ++
|
|
The alignment of the text within the module's box, allowing options 'left', 'right', or 'center' to define the positioning.
|
|
|
|
*expand*: ++
|
|
typeof: bool ++
|
|
default: false ++
|
|
If set to true, task buttons stretch to fill the available space in the taskbar and long titles are ellipsized to fit. Only takes effect on a horizontal bar; on a vertical bar the buttons keep their content-based size. If set to false, buttons are sized to their content.
|
|
|
|
*truncate*: ++
|
|
typeof: bool ++
|
|
default: false ++
|
|
If set to true, the task button text will be ellipsized (truncated with …) when the available button width is smaller than the label text.
|
|
|
|
*on-click*: ++
|
|
typeof: string ++
|
|
The action which should be triggered when clicking on the application button with the left mouse button.
|
|
|
|
*on-click-middle*: ++
|
|
typeof: string ++
|
|
The action which should be triggered when clicking on the application button with the middle mouse button.
|
|
|
|
*on-click-right*: ++
|
|
typeof: string ++
|
|
The action which should be triggered when clicking on the application button with the right mouse button.
|
|
|
|
*on-update*: ++
|
|
typeof: string ++
|
|
Command to execute when the module is updated.
|
|
|
|
*ignore-list*: ++
|
|
typeof: array ++
|
|
List of app_id/titles to be invisible.
|
|
|
|
*squash-list*: ++
|
|
typeof: array ++
|
|
List of app_id/titles whose multiple instances are collapsed into a single button. When more than one instance of a listed app is open, only one button is shown; when one instance closes, the next hidden instance reappears. The special value '\*' matches all applications.
|
|
|
|
*app_ids-mapping*: ++
|
|
typeof: object ++
|
|
Dictionary of app_id to be replaced with
|
|
|
|
*rewrite*: ++
|
|
typeof: object ++
|
|
Rules to rewrite the module format output. See *rewrite rules*.
|
|
|
|
# FORMAT REPLACEMENTS
|
|
|
|
*{icon}*: The icon of the application.
|
|
|
|
*{name}*: The application name as in desktop file if appropriate desktop files are found, otherwise same as {app_id}
|
|
|
|
*{title}*: The title of the application.
|
|
|
|
*{app_id}*: The app_id (== application name) of the application.
|
|
|
|
*{state}*: The state (minimized, maximized, active, fullscreen) of the application.
|
|
|
|
*{short_state}*: The state (minimize == m, maximized == M, active == A, fullscreen == F) represented as one character of the application.
|
|
|
|
# CLICK ACTIONS
|
|
|
|
*activate*: Bring the application into foreground.
|
|
|
|
*minimize*: Toggle application's minimized state.
|
|
|
|
*minimize-raise*: Bring the application into foreground or toggle its minimized state.
|
|
|
|
*maximize*: Toggle application's maximized state.
|
|
|
|
*fullscreen*: Toggle application's fullscreen state.
|
|
|
|
*close*: Close the application.
|
|
|
|
# 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 format output is left unchanged.
|
|
|
|
Invalid expressions (e.g., mismatched parentheses) are skipped.
|
|
|
|
# EXAMPLES
|
|
|
|
```
|
|
"wlr/taskbar": {
|
|
"format": "{icon}",
|
|
"icon-size": 14,
|
|
"icon-theme": "Numix-Circle",
|
|
"tooltip-format": "{title}",
|
|
"on-click": "activate",
|
|
"on-click-middle": "close",
|
|
"ignore-list": [
|
|
"Alacritty"
|
|
],
|
|
"app_ids-mapping": {
|
|
"firefoxdeveloperedition": "firefox-developer-edition"
|
|
},
|
|
"rewrite": {
|
|
"Firefox Web Browser": "Firefox",
|
|
"Foot Server": "Terminal"
|
|
}
|
|
}
|
|
```
|
|
|
|
# Style
|
|
|
|
- *#taskbar*
|
|
- *#taskbar.empty*
|
|
- *#taskbar button*
|
|
- *#taskbar button.maximized*
|
|
- *#taskbar button.minimized*
|
|
- *#taskbar button.active*
|
|
- *#taskbar button.fullscreen*
|
|
|
|
# Bar state style
|
|
|
|
When *bar-css-states* is enabled, the following classes are added to
|
|
*window#waybar*:
|
|
|
|
- *window#waybar.toplevel-active*
|
|
- *window#waybar.toplevel-maximized*
|
|
- *window#waybar.toplevel-minimized*
|
|
- *window#waybar.toplevel-fullscreen*
|
|
|
|
The active, minimized classes describe the active application. The maximized
|
|
and fullscreen classes are set if any non-minimized application known to belong
|
|
to the active workspace has that state.
|
|
|
|
Workspace membership is learned when an application is activated and requires
|
|
the compositor to support *ext-workspace-v1*. Before an application has been
|
|
activated during the current Waybar session, its workspace may be unknown. On
|
|
compositors without *ext-workspace-v1*, these classes fall back to the active
|
|
application's state.
|
|
|
|
For example:
|
|
|
|
```
|
|
window#waybar {
|
|
background-color: rgba(0, 0, 0, 0.5);
|
|
}
|
|
|
|
window#waybar.toplevel-maximized {
|
|
background-color: rgba(0, 0, 0, 1);
|
|
}
|
|
```
|