Recipe: spatial hub-and-satellite
A central hub with satellites scattered across one big plane; jump between them by named anchor or window mark. The workflow only an infinite plane makes possible.
On this page
This is the one a strip can't do. Lay a central hub of windows in the middle of a plane, scatter satellite working sets around it — mail to the right, a reference stack below, chat off to one corner — and travel between them by name, not by paging. Anchors are viewport bookmarks; marks bookmark windows. Together they turn the canvas into a map you navigate spatially.
What it feels like
You don't switch workspaces; you go somewhere. Mod+a snaps the viewport back
to the hub. Mod+e flies to the mail satellite. A window mark jumps straight to a
specific terminal wherever it sits. The plane has a stable geography — the same
things are always in the same place — so navigation becomes muscle memory pointed
at places, like rooms in a house, rather than indexed tabs.
The atlaswm primitives it uses
- Anchors — named viewport positions, seeded from config and jumped to by
bind (
anchor-set/anchor-jump). - Marks — vim-style bookmarks on windows; lowercase = per-plane, UPPERCASE = global across planes.
- One big plane (optionally a few) as the stable geography.
- Pan and zoom to move between and survey the layout.
Config
Seed the hub and its satellites as anchors on plane 1, then bind jumps:
mod "super"
anchors {
"hub" x=0 y=0
"mail" x=4000 y=0
"ref" x=0 y=2500
"chat" x=-3500 y=0
}
binds {
// Fly to a place by name.
"Mod+a" "anchor-jump:hub"
"Mod+e" "anchor-jump:mail"
"Mod+x" "anchor-jump:ref"
"Mod+c" "anchor-jump:chat"
// Drop a new anchor at the current view, or clear one.
"Mod+Shift+a" "anchor-set:hub"
// Window marks: a mark submap to set, a jump submap to jump.
"Mod+m" "submap:mark"
"Mod+apostrophe" "submap:jump"
// Zoom out to survey the whole map, back in to land.
"Mod+z" "zoom-out"
"Mod+Shift+z" "zoom-in"
}
submaps {
mark oneshot=#true {
"h" "mark-set:h"
"m" "mark-set:m"
"Escape" "submap-exit"
}
jump oneshot=#true {
"h" "mark-jump:h"
"m" "mark-jump:m"
"Escape" "submap-exit"
}
}
Mod+a/Mod+e/Mod+x/Mod+c re-center the viewport on each anchor (anchors
store a plane coordinate, so the jump is zoom-independent). Mod+m h marks the
focused window as h; Mod+' h jumps back to it later. Use an UPPERCASE mark
name (mark-set:H) if you want the jump to follow that window even across planes.
Not yet: there's no "this app always opens at anchor Y" (spawn-at-anchor is deferred). The closest today is a window rule sending an app to a fixed plane plus an
anchor-jumpbind to reach it.
When to use it
- You have a fixed set of contexts you return to constantly and want them in fixed places.
- You think in geography, not in lists — "mail is to the right of the hub."
- You want the one workflow a 1D scrollable strip fundamentally can't offer.
Mix it up
Pair anchors with groups so each satellite is a relocatable cluster; tag the satellites and gather/summon a working set into the hub on demand; spread satellites across a few planes if one canvas isn't enough. See also niri-like, driftwm-like and i3/sway-like.