Bars and layouts
A bar layout is an entry in the bar.layout list. Each entry targets a monitor (or all of them) and describes what the bar renders there. Fields:
| Field | Role |
|---|---|
monitor | Connector name like "DP-1", or "*" to match any monitor without a more specific entry |
left, center, right | Module lists for the three sections |
extends | Optional. Inherit from another entry by its monitor value |
show | Optional. Set to false to hide the bar on that monitor |
Inside left, center, and right, a module slot accepts three shapes, mixable within the same section:
| Shape | YAML |
|---|---|
| Plain module | clock |
| Classed module | {module: clock, class: primary} |
| Named group | {name: status, modules: [battery, network]} |
See BarLayout for the full variant examples and /config/bar for spacing, colors, and button styling.
Minimal layout
One entry matching every monitor, filled with built-in modules:
bar:
layout:
- monitor: "*"
left: [dashboard]
center: [clock]
right: [battery, network, volume, systray]monitor takes a connector name like "DP-1" or "HDMI-A-1", or "*" to match any monitor without a more specific entry.
Per-monitor overrides
A second entry with extends inherits from another layout. Any section the child omits (or leaves as an empty list) is filled in from the parent; any section the child sets replaces the parent's.
bar:
layout:
- monitor: HDMI-1
left: [dashboard]
center: [clock]
right: [battery, network, volume, systray]
- monitor: "*"
extends: HDMI-1
right: [volume, systray]On *, left and center come from the "HDMI-1" layout; right is this entry's list. extends can point at any other monitor value, not only "HDMI-1".
Groups and classes
A group renders its modules inside a shared container. The group's name becomes the container's CSS ID, addressable as #name in a stylesheet (see custom styles). Use groups when several modules should share a visual container (padding, background, border radius) targetable by one selector.
A class attaches to a single module instance. Use it when the same module appears twice on a bar and each instance needs different styling, or when one instance should diverge from the module's default look.
bar:
layout:
- monitor: DP-1
left: [dashboard]
center:
- {module: clock, class: primary}
right:
- {name: status, modules: [battery, network, volume]}Custom modules slot in the same way, referenced as custom-<id> where <id> matches an entry in modules.custom. See custom modules.
Hiding a bar
Set show: false on an entry to hide the bar on that monitor. No other fields are required.
bar:
layout:
- monitor: HDMI-2
show: false