niri-like niri
One row, pan along X, columns that scroll. atlaswm is niri — in 2D.
Uses: planes · columns · pan-x
# One row, scroll columns along X.
mod "super"
binds {
"Mod+h" "focus-left"
"Mod+l" "focus-right"
"Mod+Shift+h" "move-left"
}
atlaswm is a Wayland compositor where windows live anywhere on an unbounded canvas — and your monitor is a viewport you pan across it, in both X and Y. niri's scrollable strip, in two dimensions.
The plane is unbounded; the monitor is a window onto it. Pan in X and Y — or zoom out to an overview of everything.
Scrollable tilers like niri free you from a fixed grid of workspaces — but along one axis. atlaswm keeps the freedom and adds the second dimension: arrange related work into clusters anywhere on the canvas, and travel between them.
atlaswm isn't one more opinionated tiler — it's a toolbox. Planes, tags, scratchpads, groups, anchors, zoom/overview, binds, submaps and window rules are primitives you shape into the workflow you want. A few recipes:
One row, pan along X, columns that scroll. atlaswm is niri — in 2D.
Uses: planes · columns · pan-x
# One row, scroll columns along X.
mod "super"
binds {
"Mod+h" "focus-left"
"Mod+l" "focus-right"
"Mod+Shift+h" "move-left"
}
Disconnected groups as clusters; pan, zoom and overview between them.
Uses: groups · overview · zoom
# Disconnected clusters; zoom out to roam.
binds {
"Mod+n" "spawn-new-group"
"Mod+Tab" "group-next"
"Mod+z" "zoom-out"
"Mod+o" "overview-toggle"
}
Planes as workspaces, recursive splits and tabs, familiar i3 binds.
Uses: planes · splits · tabs
# Planes as workspaces, splits + tabs.
binds {
"Mod+1" "plane-switch:1"
"Mod+2" "plane-switch:2"
"Mod+v" "spawn-split-v"
"Mod+t" "toggle-tabs"
}
Anchors and planes: a central hub with satellites; jump by anchor or mark.
Uses: anchors · marks · planes
# A hub with satellites; jump by anchor.
anchors {
"hub" x=0 y=0
"mail" x=4000 y=0
}
binds { "Mod+a" "anchor-jump:hub" }
…or mix them. Build your own.
A pure, unit-tested layout core (columns, rows, cells, recursive splits, WM-level tabs) drives a Smithay compositor that runs nested for development or straight on the GPU as your login session.
Columns, rows, cells, recursive h/v splits and tab groups — placed anywhere on the plane.
Pan the viewport in X and Y; a zoom ladder ends in a fit-plane overview of the whole canvas.
A pool of infinite planes, free-form tags, and gather/summon scratchpads to pull tagged windows together.
Pan, zoom, and window move/resize all glide — configurable easing, instant when you turn it off.
waybar, eww, fuzzel anchor to edges and reserve space. Ships an atlas-submap indicator.
XWayland, pointer-lock plus relative motion for mouse-look, idle-inhibit. Steam and Discord run.
wlr-screencopy plus dmabuf and explicit-sync — Meet, OBS and wf-recorder capture your screen.
A live-reloaded KDL config: binds, submaps, window rules, gaps, borders, colors, anchors.
These slots are for real screen captures — a recording of panning the plane and the zoom-to-overview is the single most convincing thing here. Everything above is real, hand-made SVG.
Try it nested under your current compositor in a couple of minutes, then pick it at your greeter when you're ready to daily-drive.
Nested (in a window under your current compositor):
nix develop # enter the dev shell (Rust + Smithay deps)
cargo run
Minimal config — ~/.config/atlaswm/config.kdl:
# Or install the flake and pick "atlaswm" at your greeter.
mod "super"
gaps 8
animations { enable #true duration-ms 150 }
Mental model, installation, configuration, keybindings and concepts — the full reference for shaping atlaswm into your workflow.
Open the documentation →