waybar(5) | File Formats Manual | waybar(5) |
waybar - configuration file
The configuration uses the JSON file format and is named config.
Valid locations for this file are:
A good starting point is the default configuration found at https://github.com/Alexays/Waybar/blob/master/resources/config Also, a minimal example configuration can be found at the bottom of this man page.
layer
typeof: string
default: bottom
Decide if the bar is displayed in front (top) of the windows or behind
(bottom)
output
typeof: string|array
Specifies on which screen this bar will be displayed. Exclamation
mark(!) can be used to exclude specific output.
position
typeof: string
default: top
Bar position, can be top, bottom, left,
right.
height
typeof: integer
Height to be used by the bar if possible. Leave blank for a dynamic
value.
width
typeof: integer
Width to be used by the bar if possible. Leave blank for a dynamic value.
modules-left
typeof: array
Modules that will be displayed on the left.
modules-center
typeof: array
Modules that will be displayed in the center.
modules-right
typeof: array
margin
typeof: string
Margins value using the CSS format without units.
margin-<top|left|bottom|right>
typeof: integer
Margins value without units.
spacing
typeof: integer
Size of gaps in between the different modules.
name
typeof: string
Optional name added as a CSS class, for styling multiple waybars.
mode
typeof: string
Selects one of the preconfigured display modes. This is an equivalent of the
sway-bar(5) mode command and supports the same values: dock,
hide, invisible, overlay.
Note: hide and invisible modes may be not as useful without
Sway IPC.
start_hidden
typeof: bool
default: false
Option to start the bar hidden.
modifier-reset
typeof: string
default: press
exclusive
typeof: bool
default: true
Option to request an exclusive zone from the compositor. Disable this to
allow drawing application windows underneath or on top of the bar.
fixed-center
typeof: bool
default: true
passthrough
typeof: bool
default: false
Option to pass any pointer events to the window under the bar.
gtk-layer-shell
typeof: bool
default: true
Option to disable the use of gtk-layer-shell for popups.
ipc
typeof: bool
default: false
Option to subscribe to the Sway IPC bar configuration and visibility events
and control waybar with swaymsg bar commands.
Requires bar_id value from sway configuration to be either passed with
the -b command line argument or specified with the id
option.
id
typeof: string
bar_id for the Sway IPC. Use this if you need to override the value
passed with the -b bar_id command line argument for the specific bar
instance.
include
typeof: string|array
Paths to additional configuration files.
You can use PangoMarkupFormat (See https://developer.gnome.org/pango/stable/PangoMarkupFormat.html#PangoMarkupFormat).
e.g.
"format": "<span style="italic">{}</span>"
If you want to have a second instance of a module, you can suffix it by a '#' and a custom name. For example, if you want a second battery module, you can add "battery#bat2" to your modules. To configure the newly added module, you then also add a module configuration with the same name.
This could then look something like this (this is an incomplete example):
"modules-right": ["battery", "battery#bat2"], "battery": { "bat": "BAT1" }, "battery#bat2": { "bat": "BAT2" }
A minimal config file could look like this:
{ "layer": "top", "modules-left": ["sway/workspaces", "sway/mode"], "modules-center": ["sway/window"], "modules-right": ["battery", "clock"], "sway/window": { "max-length": 50 }, "battery": { "format": "{capacity}% {icon}", "format-icons": ["", "", "", "", ""] }, "clock": { "format-alt": "{:%a, %d. %b %H:%M}" } }
{ "layer": "top", "output": "eDP-1", "modules-left": ["sway/workspaces", "sway/mode"], ... }
{ "layer": "top", "output": ["eDP-1", "VGA"], "modules-left": ["sway/workspaces", "sway/mode"], ... }
Don't specify an output to create multiple bars on the same screen.
[{ "layer": "top", "output": "eDP-1", "modules-left": ["sway/workspaces", "sway/mode"], ... }, { "layer": "top", "output": "VGA", "modules-right": ["clock"], ... }]
When positioning Waybar on the left or right side of the screen, sometimes it's useful to be able to rotate the contents of a module so the text runs vertically. This can be done using the "rotate" property of the module. Example:
{ "clock": { "rotate": 90 } }
Valid options for the "rotate" property are: 0, 90, 180, and 270.
Module groups allow stacking modules in any direction. By default, when the bar is positioned on the top or bottom of the screen, modules in a group are stacked vertically. Likewise, when positioned on the left or right, modules in a group are stacked horizontally. This can be changed with the "orientation" property.
A module group is defined by specifying a module named "group/some-group-name". The group must also be configured with a list of contained modules. Example:
{ "modules-right": ["group/hardware", "clock"], "group/hardware": { "orientation": "vertical", "modules": [ "cpu", "memory", "battery" ] }, ... }
Valid options for the (optional) "orientation" property are: "horizontal", "vertical", "inherit", and "orthogonal" (default).
A group may hide all but one element, showing them only on mouse hover. In order to configure this, you can use the `drawer` property, whose value is an object with the following properties:
transition-duration:
typeof: integer
default: 500
Defines the duration of the transition animation in milliseconds.
children-class:
typeof: string
default: "hidden"
Defines the CSS class to be applied to the hidden elements.
transition-left-to-right:
typeof: bool
default: true
Defines the direction of the transition animation. If true, the hidden
elements will slide from left to right. If false, they will slide from right
to left.
"group/power": { "orientation": "inherit", "drawer": { "transition-duration": 500, "children-class": "not-power", "transition-left-to-right": false, }, "modules": [ "custom/power", // First element is the "group leader" and won't ever be hidden "custom/quit", "custom/lock", "custom/reboot", ] },
sway-output(5)
2024-04-01 |