Skip to content

Window: move and control windows ​

Move, resize, centre, cycle window states and control audio.

Window: move and control windowsMove, resize, centre, cycle window states and control audio.

How to use it ​

Entering Window activates and locks the window under the pointer. Moving the pointer elsewhere does not automatically change the target. Type a displayed window number to activate that window and move the pointer to its centre.

KeyAction in Window
H / J / K / LMove left / down / up / right; hold for continuous adjustment
SToggle movement and resizing around the centre
CCentre the window
DMove to the next display
F / Shift+FMaximize / restore; minimize / restore
NumberSelect a window by number
Tab / Shift+TabNext / previous window; prefer members of the current tab group
XRequest that the window close; the app may ask you to save
Z / Shift+ZUndo / redo window adjustments
Shift+CRestore positions, sizes, and window states from the start of this window session

By default, numbers cover non-minimized windows on all displays. Closing a window does not renumber the others; re-entering clears gaps. When both 1 and 12 exist, typing 1 briefly waits for more digits (250 ms by default).

Use screens = "current" to show only the current display. See Window configuration for more options.

Use the pointer while arranging windows

Hold Primary for Normal movement, scrolling, and clicks. Release it to resume the same window. Each window mode has its own bindings; remapping Normal does not remap them.

Move with grid targeting ​

Want to move a window farther in fewer keystrokes? Press G for Grid or Primary+F for Recursive Grid. Window's explicit chord remains available while the temporary Normal layer is active. As you select cells, the window center follows the target point within the display's work area.

Backtracking, restarting, and display switching use the targeting mode's usual controls. Finishing returns to Window; keep lets you continue selecting. One Z undoes the targeting session.

Remap grid entries in Window

These entries belong to [window.bindings]. Remapping Normal does not change them. Bare F still maximizes/restores. Add the entries yourself if you already use a custom Window binding table.

Audio controls ​

These default combinations work in Window, Quick, and Editor. Hold V and press the partner key; add Shift for system controls.

ScopeVolume down / upToggle mutePrevious / next output device
Application owning the target windowV+J / V+KV+MV+H / V+L
SystemShift+V+J / Shift+V+KShift+V+MShift+V+H / Shift+V+L

Volume changes by 1% per step. Raising application volume does not automatically unmute it. Multiple windows from the same app may share an audio session.

  • Windows: application volume needs an available audio session; start playback if none is found. Whether a device change moves an existing stream immediately depends on the application.
  • macOS: system audio works on macOS 14+; independent application audio needs macOS 14.2+ and System Audio Recording permission. Local processing adds audio latency. Some output devices do not support software volume control.

Window management overview · Full configuration reference

Select multiple windows ​

  1. Tap Ctrl to start selecting. The current window is selected first.
  2. Type 123 for windows 1, 2, and 3. Separate multi-digit numbers with spaces, as in 123 12 23. Repeat a number to deselect it.
  3. Press Ctrl or Enter to confirm, or move/resize directly to adjust them together. E arranges only these windows; T combines them into a tab group.

Selected windows show a border and ✓. Use Backspace to fix input or Esc to undo this input edit and return to the original window.

Clear the selection

Ctrl+X clears multi-selection. Entering Quick, Restore, or exiting also clears it and first returns to the original window. On macOS, Ctrl means Control.

Merge these entries into your existing tables to customize the keys:

toml
[window.bindings]
ctrl = "window_multi_select"
"ctrl+x" = "window_multi_clear"

[window.multi_select.bindings]
"ctrl enter" = "window_multi_confirm"
"primary+h" = "arrow_left"
"primary+l" = "arrow_right"