Recipe: i3 / sway-like
Planes as numbered workspaces, recursive h/v splits and WM-level tabs, familiar i3 binds — the manual-tiling feel on an infinite canvas.
On this page
i3 and sway are manual tilers: you split containers horizontally or vertically, nest them, collapse stacks into tabs, and page between numbered workspaces. atlaswm has all of those pieces — recursive splits, WM-level tabs, and a pool of planes you can drive like workspaces — so it maps onto i3 muscle memory cleanly, with an infinite plane underneath each workspace instead of a fixed screen.
What it feels like
Mod+1…Mod+9 jump between planes-as-workspaces. Within a plane you split the
focused cell horizontally or vertically and the new window lands in place,
i3-style; nested splits give you the classic container tree. Collapse a column
into tabs when it's crowded. It's the deliberate, manual layout control i3 is
loved for — the difference is each workspace is a 2D atlas, so a workspace never
"runs out of room."
The atlaswm primitives it uses
- Planes as workspaces (
plane-switch:<n>, 1-based, autocreated on demand). - Recursive splits in place (
spawn-split-h/spawn-split-v). - WM-level tabs (
toggle-tabs,tab-next/tab-prev). - Directional focus and move (
focus-*,move-*). - Move window to workspace (
window-to-plane-next/-prev).
Config
mod "super"
binds {
// Workspaces = planes. plane-switch:N is 1-based and autocreates on the way.
"Mod+ampersand" "plane-switch:1"
"Mod+eacute" "plane-switch:2"
"Mod+quotedbl" "plane-switch:3"
"Mod+apostrophe" "plane-switch:4"
// Splits, in place (i3's split-h / split-v + the new window).
"Mod+Ctrl+Return" "spawn-split-h"
"Mod+Ctrl+Shift+Return" "spawn-split-v"
"Mod+Return" "spawn-column"
// Tabs (i3 stacking/tabbed layout).
"Mod+t" "toggle-tabs"
"Mod+Tab" "tab-next"
"Mod+Shift+Tab" "tab-prev"
// Directional focus + move, vim keys.
"Mod+h" "focus-left"
"Mod+j" "focus-down"
"Mod+k" "focus-up"
"Mod+l" "focus-right"
"Mod+Shift+h" "move-left"
"Mod+Shift+j" "move-down"
"Mod+Shift+k" "move-up"
"Mod+Shift+l" "move-right"
// Float toggle + fullscreen, i3-style.
"Mod+space" "toggle-float"
"Mod+f" "fullscreen"
}
The number-row caveat. i3 binds
Mod+1…Mod+9. Binds follow the letter the key types, not the physical position — so on azerty/fr the top-row keys type&,é,",', … (digits need Shift), which is what the example above binds (ampersand,eacute,quotedbl,apostrophe). On a qwerty layout use"Mod+1" "plane-switch:1"and so on. Match the keysyms your keyboard actually produces — run withdebug { trace #true }to see what a key reports.
When to use it
- You're coming from i3 or sway and want your bindings and habits to carry over.
- You prefer manual, deliberate layout control over automatic tiling.
- You want numbered workspaces — but with room to spread out inside each one.
Mix it up
Add window rules to send apps to a fixed plane
(plane 2 for the browser) the way i3's assign does; use
gather/summon for an i3
scratchpad-on-steroids; or pan/zoom within a workspace when one plane gets busy
instead of opening another. See also
niri-like,
driftwm-like and
spatial hub.