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.

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-jump bind to reach it.

GIF

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.