Keybindings
The default binds, how to rebind them, the resize / planes submaps, and how mod "auto" picks Alt or Super.
On this page
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
| Keys | Action |
|---|---|
Mod+Return | new terminal in a new column |
Mod+Shift+Return | new terminal stacked below |
Mod+Ctrl+Return | split the focused window in place (horizontal) |
Mod+Ctrl+Shift+Return | split in place (vertical) |
Mod+h/j/k/l | move focus |
Mod+Shift+h/j/k/l | move the window (creates a new row at the top/bottom edge) |
Mod+Ctrl+h/j/k/l | pan the viewport |
Mod+Ctrl+Shift+h/j/k/l | force: eject a tab out of its group, or push a window into an adjacent group |
Mod+s / Mod+Shift+s | cycle column-width presets |
Mod+z / Mod+Shift+z | zoom out / in along the ladder |
Mod+scroll | the same ladder by mouse wheel (down = out, up = in) |
Mod+t | tab / untab the focused column |
Mod+Tab / Mod+Shift+Tab | cycle tabs |
Mod+space | float / re-tile the focused window |
Mod+f | fullscreen toggle |
Mod+period / Mod+comma | switch to the next / previous plane |
Mod+r | enter the resize submap |
Mod+w | enter the pan submap |
Mod+o | enter the planes submap |
Mod+LeftClick drag | move a floating window (left button only) |
Mod+RightClick drag | resize: drag tiled seams, or a float's corner |
Mod+q | close the focused window |
Mod+Shift+e | quit |
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-submapwaybar 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 / l | shrink / grow horizontally (nearest split share, else the column width) |
j / k | shrink / grow vertically (nearest split share, else the cell share, else the row height) |
Shift+j / Shift+k | shrink / grow the whole row |
s | cycle column-width presets |
Escape / Return | leave 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 / h | switch to the next / previous plane |
n | create a fresh plane and switch to it |
q | close the active plane (only if it's empty) |
Shift+l / Shift+h | move the focused window to the next / previous plane (and follow it) |
Escape / Return | leave 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.