Keybindings
Keybindings live under [keybinds] in wm.toml. Each built-in action maps to:
- a single chord string —
action = "Super+H" - a list of chords —
action = ["Super+H", "Alt+Left"] - an empty list to unbind —
action = []
Chord grammar
Section titled “Chord grammar”Tokens joined by +, case-insensitive.
- Modifiers:
Super(Mod4),Ctrl,Alt(Mod1),Shift - Keys: letters
A–Z, digits0–9,F1–F24, and named keys (Return,Space,Tab,Comma,Period,Escape,Left,Right,Up,Down,Home,End,PageUp,PageDown, …)
Omit a line to keep the compiled-in default.
Window & session
Section titled “Window & session”[keybinds]toggle_start_menu = "Super+Space"spawn_terminal = "Super+Return"close_focused = "Super+Q"reload_config = "Super+R"Focus & movement
Section titled “Focus & movement”focus_left = "Super+H"focus_right = "Super+L"focus_up = "Super+K"focus_down = "Super+J"
move_window_left = "Super+Shift+Left"move_window_right = "Super+Shift+Right"move_window_up = "Super+Shift+Up"move_window_down = "Super+Shift+Down"Move semantics vary per engine: tile/grid/dwindle swap neighbours;
scrolling swaps columns or reorders within a column; monocle reorders the
z-stack; game-mode reorders the non-anchor band; float is a no-op.
Scrolling-layout panning
Section titled “Scrolling-layout panning”scroll_viewport_left = "Super+Comma"scroll_viewport_right = "Super+Period"move_column_left = "Super+Shift+H"move_column_right = "Super+Shift+L"Layout switching
Section titled “Layout switching”Resolves through [layout.slots] in layout.toml.
set_layout_primary = "Super+T" # → primary slotset_layout_secondary = "Super+F" # → secondary slotset_layout_tertiary = "Super+M" # → tertiary slotset_layout_quaternary = "Super+G" # → quaternary slotWorkspaces
Section titled “Workspaces”Workspaces are exclusive (niri-style, ext-workspace-v1): a window lives on
exactly one workspace; one workspace is active per output. Indices are 1-based.
focus_workspace_1 = "Super+1" # …through Super+9move_to_workspace_1 = "Super+Shift+1" # …through Super+Shift+9
focus_workspace_up = "Super+Bracketleft"focus_workspace_down = "Super+Bracketright"focus_previous_workspace = "Super+grave" # back-and-forth
focus_output_left = "Super+Comma"focus_output_right = "Super+Period"move_to_output_left = "Super+Shift+Comma"Window states
Section titled “Window states”Each toggle remembers the prior state, so a second press round-trips. Only one fullscreen window per output is allowed.
toggle_fullscreen = "Super+Shift+F"toggle_maximize = "Super+Shift+M"toggle_floating = "Super+Shift+Space"toggle_minimize = "Super+N"unminimize_last = "Super+Shift+N"toggle_scratchpad = "Super+Backslash"send_to_scratchpad = "Super+Shift+Backslash"Pointer
Section titled “Pointer”# Hold to release any active pointer constraint (game mouse-trap); re-engages on release.untrap_pointer = "Super+grave"Custom chords
Section titled “Custom chords”Free-form chord = action verb entries.
[keybinds.custom]"Super+E" = "spawn:nemo""Super+Shift+S" = "spawn:grim -g \"$(slurp)\" - | wl-copy""Alt+F4" = "builtin:close_focused""Super+grave" = "builtin:toggle_scratchpad_named:term"Action verbs:
spawn:<argv>— fork/exec via/bin/sh -c(detached)set_layout:<id-or-slot>— switch active layout (tile,monocle,grid,float,scrolling, or a[layout.slots]name)builtin:<action_name>— invoke a built-in by canonical name (a:argsuffix targets named scratchpads, etc.)
