Recipe: niri-like

One row, scroll columns along X — atlaswm as niri, in 2D. The horizontal scrollable strip, with the second dimension waiting when you want it.

niri freed the tiler from a fixed grid of workspaces: windows live in an endless horizontal strip of columns, and you scroll along it. atlaswm is that — and then some, because the strip is one row of a 2D plane. Use the plane like niri's strip and you get the niri feel; the vertical axis is there the moment you want it.

What it feels like

You spawn windows into columns that march off to the right. Focus left/right scrolls the viewport to keep the focused column in view; there's never a "screen edge" the layout stops at. New work just extends the strip. When a column gets busy you stack windows in it (the vertical axis), but the default motion is horizontal: a long, scrollable run of columns.

The atlaswm primitives it uses

  • One plane, used as a single row — columns across, pan along X.
  • Focus that scrolls the viewport — moving focus to an off-screen column pans to it (built in; no config needed).
  • Pan in X for free scrolling without moving focus.
  • Column-width presets (cycle-width) for niri's "set column width" feel.

Config

Copy-paste into ~/.config/atlaswm/config.kdl. This keeps every default and just reinforces the horizontal flow with explicit, ergonomic binds:

mod "super"

// Spawn into a new column to the right; stack vertically only when you ask.
binds {
    "Mod+Return" "spawn-column"
    "Mod+Shift+Return" "spawn-below"

    // Move focus along the strip (scrolls the viewport to follow).
    "Mod+h" "focus-left"
    "Mod+l" "focus-right"
    "Mod+k" "focus-up"
    "Mod+j" "focus-down"

    // Carry the focused window along the strip.
    "Mod+Shift+h" "move-left"
    "Mod+Shift+l" "move-right"

    // Free-scroll the strip without moving focus.
    "Mod+Ctrl+h" "pan-left"
    "Mod+Ctrl+l" "pan-right"

    // niri-style column width: cycle the presets.
    "Mod+s" "cycle-width"
    "Mod+Shift+s" "cycle-width-back"

    // Snap a column to a fraction of the screen.
    "Mod+u" "width-set:1/3"
    "Mod+i" "width-set:2/3"
    "Mod+p" "width-set:1"
}
GIF

When to use it

  • You already think in niri's scrollable strip and want it on Wayland with a Smithay core.
  • You like one long workspace over many small ones — extend right instead of switching.
  • You want the option of the second dimension (push a window past the top/bottom edge to start a row) without committing to it.

Mix it up

Stay one-dimensional, or reach for more: stack windows vertically when a column fills up, add a few planes as the rare "different context" workspace, or zoom out (Mod+z) to a fit-plane overview of the whole strip. See the other recipes — driftwm-like, i3/sway-like, spatial hub — or build your own.