Multi-monitor
Workspaces 1–9 spread across monitors with stable assignment that survives display unplug and replug: unplug at the office, replug at home, and every workspace lands back on the monitor you assigned it to.
Assigning workspace → monitor
Section titled “Assigning workspace → monitor”[workspaces]"1" = "Built-in""9" = "P34w-20"The value is either the stable monitor ID (vendor:model:serial — logged
at startup, copy it with a click in the ◱ menu bar menu) or part of the
display name.
It can also be an array — a priority list where the first connected monitor wins, so the same config works at home and at the office:
[workspaces]"1" = ["PHL", "P34w"] # prefer PHL, fall back to P34wBehavior
Section titled “Behavior”- Unlisted workspaces spread over the remaining displays.
- A workspace whose display disconnects moves to a connected one and returns on replug — placement is a pure function (workspace names, config, connected monitors), no imperative migration, so a replug always reproduces the same result.
- The monitor ID is hardware-derived, not
CGDirectDisplayID(which changes between sessions). - Sleep or a closed lid can report zero connected displays; when that
happens
ancreleaves the current arrangement untouched instead of reassigning workspaces, so everything is back where it was on wake. - Focus follows the workspace by name: moving focus to a monitor focuses whichever workspace is currently active on it, not a fixed workspace number.
Focus across monitors
Section titled “Focus across monitors”hyper+, / hyper+. moves focus to the previous/next monitor. The bar has
per-monitor overrides ([bar-overrides.*]) — see Bar.