Keybindings

The default binds, how to rebind them, the resize / planes submaps, and how mod "auto" picks Alt or Super.

Every bind is a line in the binds block: "<key pattern>" "<action>". Every bind below is rebindable; nothing here is hard-wired except Escape always exits a submap (it can't be rebound into a trap).

The mod key

mod "auto"

Mod is the modifier every bind references. auto (the default) resolves to Alt when running nested (the host compositor owns Super) and Super on a real session (the DRM backend) — so you don't need a different config for nested vs session. Override it explicitly with mod "alt" or mod "super"; an explicit value always wins. Throughout the docs, Mod means whatever this resolves to.

Key patterns combine modifiers with +: Mod, Shift, Ctrl, Alt, Super, then the key (Return, space, Tab, period, a letter, …). Binds follow the letter the key types, not the physical position — Mod+q on azerty is the key that types q.

Default binds

KeysAction
Mod+Returnnew terminal in a new column
Mod+Shift+Returnnew terminal stacked below
Mod+Ctrl+Returnsplit the focused window in place (horizontal)
Mod+Ctrl+Shift+Returnsplit in place (vertical)
Mod+h/j/k/lmove focus
Mod+Shift+h/j/k/lmove the window (creates a new row at the top/bottom edge)
Mod+Ctrl+h/j/k/lpan the viewport
Mod+Ctrl+Shift+h/j/k/lforce: eject a tab out of its group, or push a window into an adjacent group
Mod+s / Mod+Shift+scycle column-width presets
Mod+z / Mod+Shift+zzoom out / in along the ladder
Mod+scrollthe same ladder by mouse wheel (down = out, up = in)
Mod+ttab / untab the focused column
Mod+Tab / Mod+Shift+Tabcycle tabs
Mod+spacefloat / re-tile the focused window
Mod+ffullscreen toggle
Mod+period / Mod+commaswitch to the next / previous plane
Mod+renter the resize submap
Mod+wenter the pan submap
Mod+oenter the planes submap
Mod+LeftClick dragmove a floating window (left button only)
Mod+RightClick dragresize: drag tiled seams, or a float's corner
Mod+qclose the focused window
Mod+Shift+equit

Rebinding

Drop the lines you want into your binds block. Same pattern as a default = override; new pattern = added. You don't re-list the rest.

binds {
    // override a default: make Mod+Return spawn your launcher instead
    "Mod+Return" "spawn:wofi --show drun"
    // add new ones (these have no default — the action exists, the bind doesn't)
    "Mod+Print" "spawn:grim -g \"$(slurp)\" ~/shot.png"
    "Mod+slash" "jump-to-window"
    "Mod+1" "plane-switch:1"
    "Mod+2" "plane-switch:2"
}

The action string is the same vocabulary atlasctl action accepts — anything bindable is invocable from a script too. Actions that take an argument use a colon: spawn:<cmd>, tag-toggle:<name>, plane-switch:<n>, width-set:<ratio>, mark-jump:<name>. See Configuration and the config reference for the full list.

Submaps

A submap is a modal bind table (Hyprland submaps / i3 modes). A bind with the "submap:<name>" action enters the mode; while it's active its table replaces the normal binds (typically bare keys — no chords), unbound keys are swallowed instead of reaching the focused app, and Escape always exits. The shortcut that entered a submap also exits it (toggle), on top of Escape.

Try the default pan submap: Mod+w, then pan around with bare h/j/k/l, Escape to leave.

No on-screen indicator ships in the compositor, but the atlas-submap waybar module (see Integration) shows the active submap so you never get stuck in one unaware.

The resize submap (Mod+r)

Resize verbs target innermost-first: they resize the closest thing around the focused window that flexes on that axis, falling outward when there isn't one.

Key (in the submap)Action
h / lshrink / grow horizontally (nearest split share, else the column width)
j / kshrink / grow vertically (nearest split share, else the cell share, else the row height)
Shift+j / Shift+kshrink / grow the whole row
scycle column-width presets
Escape / Returnleave the submap

While the resize submap is active, the region a resize will affect is outlined on screen (the resize-highlight colour), so the innermost-first target is never a surprise. Steps come from resize { step-px step-share }.

The planes submap (Mod+o)

Key (in the submap)Action
l / hswitch to the next / previous plane
ncreate a fresh plane and switch to it
qclose the active plane (only if it's empty)
Shift+l / Shift+hmove the focused window to the next / previous plane (and follow it)
Escape / Returnleave the submap

Your own submaps

Declare a submap and an enter-bind for it. Add oneshot=#true to make it exit after its first action (handy for a "do one thing then get out of the way" mode); the default is sticky.

binds {
    "Mod+g" "submap:groups"
}

submaps {
    groups oneshot=#true {
        "n" "spawn-new-group"
        "l" "group-next"
        "h" "group-prev"
        "Escape" "submap-exit"
    }
}

A note on azerty defaults

The default plane-next / plane-prev binds use Mod+period / Mod+comma. On azerty/fr, , is unshifted (so Mod+comma works) but . needs Shift (so the bare Mod+period keysym never matches). Punctuation keysyms aren't layout-normalized the way letters are. If you're on azerty, rebind these to something that fits your layout — they're one-line changes.