Keybindings
Built-in bindings live under [keybinds] in wm.toml. Each action accepts one
chord, an array of chords, or an empty array that removes every chord for that
action:
[keybinds]cycle_focus = ["Super+Tab", "Alt+Tab"]close_focused = "Super+Q"reload_rules = []Omitting an action keeps its compiled default. The packaged wm.toml adds
convenient bindings for layout slots and column movement that are not all
compiled defaults.
Chord grammar
Section titled “Chord grammar”Join case-insensitive tokens with +.
- Primary modifier:
Super,Mod4,Logo, orWin. - Physical Super modifier:
Meta, even whenAQUEOUS_MOD=Alt. - Other modifiers:
Ctrl/Control,Alt/Mod1, andShift. - Keys: printable ASCII,
F1–F24, navigation/editing names, punctuation names,Print,CapsLock, and commonXF86media/display/brightness keys. - Scroll directions:
WheelUp,WheelDown,WheelLeft, andWheelRight, including accumulated touchpad scroll steps.
AQUEOUS_MOD=Alt makes Alt the primary modifier; in that mode literal Alt is
still resolved consistently. Use Meta to address the physical Super key.
Session, focus, and overview
Section titled “Session, focus, and overview”| Action | Compiled default |
|---|---|
toggle_start_menu |
Super+Space |
spawn_terminal |
Super+Return |
screenshot |
Print |
close_focused |
Super+Q |
toggle_overview |
Super+W |
cycle_focus |
Super+Tab |
focus_left/right/up/down |
Super+H/L/K/J |
reload_config |
Super+R |
lock_screen |
Super+Ctrl+L |
untrap_pointer |
Super+grave |
The overview contains every focusable window on the active workspace, including off-viewport scrolling members. Navigate with arrows, H/J/K/L, Tab, or pointer input, then confirm a window or close the overview.
Four command actions run values from [actions]:
[actions]toggle_start_menu = "dms ipc call spotlight toggle"spawn_terminal = "ghostty"screenshot = "dms screenshot region"These examples use the DMS source-package commands. Set lock_screen to your
chosen session locker’s command; binding the action alone does not configure a
locker. Noctalia users can keep their existing shell commands.
Layout-aware movement
Section titled “Layout-aware movement”[keybinds]move_window_left = "Super+Shift+Left"move_window_right = "Super+Shift+Right"move_window_up = "Super+Shift+Up"move_window_down = "Super+Shift+Down"Movement follows the active engine:
- Tile, grid, dwindle, and reverse-dwindle swap geometric neighbors.
- Scrolling joins adjacent columns or reorders members vertically.
- Monocle changes z-stack order.
- Game Mode delegates to its active remainder while the anchor stays fixed.
- Composable delegates to the member’s child; cross-region pointer drops exchange membership.
- Stacking uses the configured fine movement step.
Scrolling actions
Section titled “Scrolling actions”| Action | Typical/default chord |
|---|---|
scroll_viewport_left/right |
Super+Comma/Period (legacy names) |
scroll_viewport_left_arrow/right_arrow |
Super+Left/Right |
wheel_scroll_left/right |
Super+WheelUp/Down |
scroll_viewport_up/down |
Super+Up/Down |
wheel_scroll_up/down |
Alt+Meta+WheelUp/Down |
consume_window_into_column |
Super+Ctrl+J |
expel_window_from_column |
Super+Ctrl+K |
toggle_scrolling_full_width |
Super+Shift+Z |
move_column_left/right |
packaged as Super+Shift+H/L |
The primary-modifier wheel chord pans columns; primary+Alt moves within a vertical column. See Layouts for pointer insertion and resize behavior.
Wheel actions accept the same string, array, or empty-array syntax as keyboard actions. Rebinding one removes its previous default without changing the arrow shortcuts:
[keybinds]wheel_scroll_left = ["Ctrl+WheelUp", "Ctrl+WheelLeft"]wheel_scroll_right = ["Ctrl+WheelDown", "Ctrl+WheelRight"]wheel_scroll_up = []wheel_scroll_down = []
[keybinds.custom]"Super+WheelUp" = "builtin:focus_workspace_up""Super+WheelDown" = "builtin:focus_workspace_down"Custom wheel chords can run any supported action or command outside scrolling
layouts, too. An explicit custom chord replaces the default on that chord.
Matched steps are consumed even when the action has no effect; unmatched
directions reach the application. Wheel input cannot hold untrap_pointer.
Locks, shortcut inhibition, overview, interactive drags, and XWayland keyboard
grabs prevent wheel bindings from running.
Layout selection and composable regions
Section titled “Layout selection and composable regions”The four set_layout_primary/secondary/tertiary/quaternary actions resolve
through [layout.slots]. Direct custom actions can select an ID or slot:
[keybinds.custom]"Super+Alt+D" = "set_layout:dwindle""Super+Alt+Shift+D" = "set_layout:reverse-dwindle""Super+Alt+F" = "set_layout:stacking""Super+Alt+C" = "set_layout:composable""Super+Alt+1" = "builtin:focus_composable:a""Super+Alt+Shift+1" = "builtin:move_to_composable:a"Workspaces and outputs
Section titled “Workspaces and outputs”Aqueous creates nine pinned workspaces per output. One is active on each output, and each window belongs to at most one workspace.
[keybinds]focus_workspace_1 = "Super+1" # through focus_workspace_9move_to_workspace_1 = "Super+Shift+1" # through move_to_workspace_9focus_workspace_up = "Super+Bracketleft"focus_workspace_down = "Super+Bracketright"focus_previous_workspace = "Super+BackSpace"move_to_workspace_up = "Super+Shift+Bracketleft"move_to_workspace_down = "Super+Shift+Bracketright"
focus_output_left = "Super+Ctrl+Comma"focus_output_right = "Super+Ctrl+Period"move_to_output_left = "Super+Shift+Comma"move_to_output_right = "Super+Shift+Period"rotate_output_clockwise = "Super+Ctrl+R"Output navigation uses physical rectangles rather than connector iteration order. Rotation targets only the enabled output beneath the pointer and is not persisted to TOML.
An explicitly selected output remains the target for subsequent workspace and window actions even when it is empty. Output navigation moves the pointer to the destination; mouse-follows-focus can additionally place it inside the newly focused window.
Window states
Section titled “Window states”[keybinds]toggle_fullscreen = "Super+Shift+F"toggle_maximize = "Super+Shift+M"toggle_floating = "Super+Shift+Space"toggle_minimize = "Super+N"unminimize_last = "Super+Shift+N"Toggles remember prior presentation. Aqueous keeps one fullscreen owner per
output; minimized windows leave layout and focus selection until restored.
toggle_maximize_horizontal and toggle_maximize_vertical are available as
unbound partial-maximize actions.
Stacking and freeform actions
Section titled “Stacking and freeform actions”These built-ins are intentionally unbound so existing configurations keep their chords:
| Group | Actions |
|---|---|
| Stack order | raise_window, lower_window, toggle_always_above, toggle_always_below |
| Fine movement | nudge_floating_left/right/up/down |
| Coarse movement | nudge_floating_coarse_left/right/up/down |
| Grow an edge | resize_floating_left/right/up/down |
| Shrink an edge | shrink_floating_left/right/up/down |
| Standard snap | snap_left/right/up/down, snap_center, four corner actions, unsnap |
| Named stacking snap | builtin:snap_zone:<layout>/<zone>, builtin:set_snap_layout:<layout>, builtin:cycle_snap_layout[_reverse] |
| Legacy custom snap | builtin:snap_zone:a through d, cycle_snap_zone |
| Fit/partial maximize | fit_floating_to_output, toggle_maximize_horizontal/vertical |
| Edge operations | move_floating_to_edge_<direction>, grow_floating_to_edge_<direction> |
The pixel increments, gap, resistance, and top-edge behavior come from
[layout.options.stacking].
Custom chords
Section titled “Custom chords”[keybinds.custom] maps a chord to one verb:
[keybinds.custom]"Super+E" = "spawn:nemo""Super+Shift+V" = "launch:vesktop-ssd""Super+Shift+S" = "builtin:screenshot""Alt+F4" = "builtin:close_focused""Super+Alt+2" = "builtin:snap_zone:work/terminal""Super+Alt+W" = "builtin:set_snap_layout:work""Super+Alt+Space" = "builtin:cycle_snap_layout""XF86AudioRaiseVolume" = "spawn:wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"spawn:<command>runs a detached/bin/sh -ccommand.launch:<profile>directly executes a named[[application]]profile with its typed argument and environment arrays, without a shell.set_layout:<id-or-slot>selects a layout directly.builtin:<action>invokes any canonical built-in action, including argument forms for snap zones and composable regions.
Use launch: for application-specific Wayland or decoration switches where
argument boundaries matter. Profiles are defined in wm.toml; see
Application launch profiles.
builtin:cycle_snap_layout_reverse cycles named layouts in the opposite
direction. Named layout and zone actions are consumed only on a full stacking
workspace; they remain inert in every other layout, including for persistent
floating overlays.
If several declarations resolve to the same chord, the last declaration wins. A bound Caps Lock chord is consumed by Aqueous and does not toggle the lock; without a binding, Caps Lock retains normal XKB behavior.
