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>
154 lines
3.8 KiB
Scdoc
154 lines
3.8 KiB
Scdoc
waybar-menu(5)
|
|
|
|
# NAME
|
|
|
|
waybar - menu property
|
|
|
|
# OVERVIEW
|
|
|
|
|
|
Some modules support a 'menu', which allows to have a popup menu when a defined
|
|
click is done over the module.
|
|
|
|
# PROPERTIES
|
|
|
|
A module that implements a 'menu' needs 3 properties defined in its config :
|
|
|
|
*menu*: ++
|
|
typeof: string ++
|
|
Action that popups the menu. The possibles actions are :
|
|
|
|
[- *Option*
|
|
:- *Description*
|
|
|[ *on-click*
|
|
:< When you left-click on the module
|
|
|[ *on-click-release*
|
|
:< When you release left button on the module
|
|
|[ *on-double-click*
|
|
:< When you double left click on the module
|
|
|[ *on-triple-click*
|
|
:< When you triple left click on the module
|
|
|[ *on-click-middle*
|
|
:< When you middle click on the module using mousewheel
|
|
|[ *on-click-middle-release*
|
|
:< When you release mousewheel button on the module
|
|
|[ *on-double-click-middle*
|
|
:< When you double middle click on the module
|
|
|[ *on-triple-click-middle*
|
|
:< When you triple middle click on the module
|
|
|[ *on-click-right*
|
|
:< When you right click on the module using
|
|
|[ *on-click-right-release*
|
|
:< When you release right button on the module
|
|
|[ *on-double-click-right*
|
|
:< When you double right click on the module
|
|
|[ *on-triple-click-right*
|
|
:< When you triple middle click on the module
|
|
|[ *on-click-backward*
|
|
:< When you click on the module using mouse backward button
|
|
|[ *on-click-backward-release*
|
|
:< When you release mouse backward button on the module
|
|
|[ *on-double-click-backward*
|
|
:< When you double click on the module using mouse backward button
|
|
|[ *on-triple-click-backward*
|
|
:< When you triple click on the module using mouse backawrd button
|
|
|[ *on-click-forward*
|
|
:< When you click on the module using mouse forward button
|
|
|[ *on-click-forward-release*
|
|
:< When you release mouse forward button on the module
|
|
|[ *on-double-click-forward*
|
|
:< When you double click on the module using mouse forward button
|
|
|[ *on-triple-click-forward*
|
|
:< When you triple click on the module using mouse forward button
|
|
|
|
*menu-file*: ++
|
|
typeof: string ++
|
|
Location of the menu descriptor file. There need to be an element of type
|
|
GtkMenu with id *menu*.
|
|
|
|
*menu-actions*: ++
|
|
typeof: object ++
|
|
The actions corresponding to the buttons of the menu. The identifiers of
|
|
each actions needs to exists as an id in the 'menu-file' for it to be linked
|
|
properly.
|
|
|
|
# MENU-FILE
|
|
|
|
The menu-file is an `.xml` file representing a GtkBuilder. Documentation for it
|
|
can be found here : https://docs.gtk.org/gtk4/class.Builder.html
|
|
|
|
Here, it needs to have an element of type GtkMenu with id "menu". Eeach actions
|
|
in *menu-actions* are linked to elements in the *menu-file* file by the id of
|
|
the elements.
|
|
|
|
# EXAMPLE
|
|
|
|
Module config :
|
|
```
|
|
"custom/power": {
|
|
"format" : "⏻ ",
|
|
"tooltip": false,
|
|
"menu": "on-click",
|
|
"menu-file": "~/.config/waybar/power_menu.xml",
|
|
"menu-actions": {
|
|
"shutdown": "shutdown",
|
|
"reboot": "reboot",
|
|
"suspend": "systemctl suspend",
|
|
"hibernate": "systemctl hibernate",
|
|
},
|
|
},
|
|
```
|
|
|
|
~/.config/waybar/power_menu.xml :
|
|
```
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
<interface>
|
|
<object class="GtkMenu" id="menu">
|
|
<child>
|
|
<object class="GtkMenuItem" id="suspend">
|
|
<property name="label">Suspend</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkMenuItem" id="hibernate">
|
|
<property name="label">Hibernate</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkMenuItem" id="shutdown">
|
|
<property name="label">Shutdown</property>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
<object class="GtkSeparatorMenuItem" id="delimiter1"/>
|
|
</child>
|
|
<child>
|
|
<object class="GtkMenuItem" id="reboot">
|
|
<property name="label">Reboot</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</interface>
|
|
```
|
|
|
|
# STYLING MENUS
|
|
|
|
- *menu*
|
|
Style for the menu
|
|
|
|
- *menuitem*
|
|
Style for items in the menu
|
|
|
|
# EXAMPLE:
|
|
|
|
```
|
|
menu {
|
|
border-radius: 15px;
|
|
background: #161320;
|
|
color: #B5E8E0;
|
|
}
|
|
menuitem {
|
|
border-radius: 15px;
|
|
}
|
|
```
|