Keyboard Shortcuts
Customization and the Hyper modifier
Section titled “Customization and the Hyper modifier”All global shortcuts are customizable in Settings > Keyboard Shortcuts. A shortcut can also be an extra mouse button, alone or with modifiers: click the shortcut, then press the button over it. OmniWM consumes a bound press, so the app under the pointer does not also receive it, and a button used by the System Hyper Trigger or Overview must be unassigned there first. Hyper is the literal Control + Option + Shift + Command chord by default; which modifiers make up Hyper is configurable in Settings > Keyboard Shortcuts (for example, exclude Shift to keep Hyper + Shift + … free for extra bindings). Changing the combination retargets every shortcut that currently resolves to Hyper onto the new one, so the shortcut list updates in place as you toggle the modifiers.
Optionally pick a System Hyper Trigger — a single key (Caps Lock, F13–F20, or a left- or right-side modifier) or an extra mouse button that acts as Hyper while held (this needs the Input Monitoring permission). Leave the trigger as None if you already produce Hyper another way, such as a Karabiner Elements remap.
Settings > Keyboard Shortcuts lists all actions that can be assigned a shortcut, including advanced actions.
When a shortcut does not fire
Section titled “When a shortcut does not fire”Confirm the binding and any registration warning in Settings > Keyboard Shortcuts, then check Settings > Troubleshooting for related diagnostics. If skhd, Raycast, or another shortcut utility is still running with the same binding, stop it or reassign the conflicting shortcut before editing settings.toml.
HotkeyClash can inspect shortcuts across supported apps, config files, and macOS. It does not parse Raycast settings.
Layout legend
Section titled “Layout legend”Sharedworks in any active layout.Niriworks only when the active workspace uses the Niri layout.Dwindleworks only when the active workspace uses the Dwindle layout.
Workspace
Section titled “Workspace”| Action | Default Shortcut | Layout |
|---|---|---|
| Switch to Workspace 1-9 | Option + 1-9 |
Shared |
| Move Focused Window to Workspace 1-9 | Option + Shift + 1-9 |
Shared |
| Switch to Workspace Slot 1-9 (position on the current monitor) | Unassigned |
Shared |
| Move Focused Window to Workspace Slot 1-9 (position on the current monitor) | Unassigned |
Shared |
| Switch to Last Active Workspace (Back and Forth) | Control + Option + Tab |
Shared |
| Switch to Next Workspace | Unassigned |
Shared |
| Switch to Previous Workspace (Sequential) | Unassigned |
Shared |
| Move Focused Window to Workspace Up | Control + Option + Shift + Up Arrow |
Shared |
| Move Focused Window to Workspace Down | Control + Option + Shift + Down Arrow |
Shared |
| Move Focused Column to Workspace 1-9 | Unassigned |
Niri |
| Move Focused Column to Workspace Up | Control + Option + Shift + Page Up |
Niri |
| Move Focused Column to Workspace Down | Control + Option + Shift + Page Down |
Niri |
Creating workspace 10 or higher adds its Switch, Move, and Move Column actions to Settings > Keyboard Shortcuts as Unassigned. The rows disappear when the workspace is removed.
| Action | Default Shortcut | Layout |
|---|---|---|
| Focus Left / Right / Up / Down | Option + Arrow Keys |
Shared |
| Focus Next / Previous Window (Wrap) | Unassigned |
Shared |
| Focus First / Last Window in Column | Unassigned |
Niri |
| Focus Window or Workspace Down / Up | Unassigned |
Niri |
| Focus Previously Focused Window | Option + Tab |
Shared |
| Traverse Backward | Unassigned |
Niri |
| Traverse Forward | Unassigned |
Niri |
| Focus First Column | Option + Home |
Niri |
| Focus Last Column | Option + End |
Niri |
| Focus Column 1-9 | Control + Option + 1-9 |
Niri |
| Focus Window 1-9 in Column | Unassigned |
Niri |
| Toggle Command Palette | Control + Option + Space |
Shared |
| Open Menu Anywhere | Control + Option + M |
Shared |
| Set Mark on Focused Window | Unassigned |
Shared |
| Remove Mark from Focused Window | Unassigned |
Shared |
| Close Focused Window | Unassigned |
Shared |
| Toggle Workspace Bar | Unassigned |
Shared |
| Toggle Hidden Icons Panel | Unassigned |
Shared |
| Toggle Quake Terminal | Option + ` |
Shared |
| Toggle Overview | Option + Shift + O |
Shared |
| Toggle System Stats | Unassigned |
Shared |
| Volume Up | Unassigned |
Shared |
| Volume Down | Unassigned |
Shared |
| Mute or Unmute Volume | Unassigned |
Shared |
| Play or Pause Media | Unassigned |
Shared |
| Next Track | Unassigned |
Shared |
| Previous Track | Unassigned |
Shared |
Toggle <drawer or widget> |
Unassigned |
Shared |
Settings > Keyboard Shortcuts lists a Toggle action for every shell drawer and every shell widget with a popout. A bound Toggle stays in the list even while its drawer or widget is missing. The volume, media and Toggle actions are Unreleased: available when building from main.
The Set Mark and Remove Mark global actions and the Command Palette mark shortcuts below are available.
Window marks in the Command Palette
Section titled “Window marks in the Command Palette”These shortcuts are available while the Command Palette is open in Windows mode. They act on the selected window row and are shown beside the matching Palette actions.
| Action | Shortcut |
|---|---|
| Mark selected window | Control + Option + Shift + M |
| Remove a mark from the selected window | Control + Option + Shift + R |
These shortcuts are local to the open Palette and yield to conflicting enabled global shortcuts; the affected Palette action remains available as a button. Set Mark on Focused Window and Remove Mark from Focused Window are also available as separate, unassigned actions in Settings > Keyboard Shortcuts for configurable global shortcuts. Outside the Palette, key combinations retain their configured global behavior.
Move Window
Section titled “Move Window”| Action | Default Shortcut | Layout |
|---|---|---|
| Move Left / Right / Up / Down | Option + Shift + Arrow Keys |
Shared |
| Move Window to Previous / Next Position | Unassigned |
Shared |
| Move Window Down or to Workspace Down / Up or to Workspace Up | Unassigned |
Niri |
| Pull Top Window from Next Column into Focused Column | Unassigned |
Niri |
| Push Bottom Window from Focused Column into New Column | Unassigned |
Niri |
The pull action treats the focused column as the destination and does nothing when there is no next column. The push action moves the bottom window from the focused column into a new following column. Neither action wraps, and there is no pull-from-previous action.
Monitor
Section titled “Monitor”| Action | Default Shortcut | Layout |
|---|---|---|
| Focus Next Monitor in Order | Control + Command + Tab |
Shared |
| Focus Previous Monitor in Order | Unassigned |
Shared |
| Focus Last Active Monitor | Control + Command + ` |
Shared |
| Move Workspace to Monitor on Left / Right / Above / Below | Unassigned |
Shared |
| Move Focused Window to Monitor on Left / Right / Above / Below | Unassigned |
Shared |
The workspace-to-monitor actions target the active workspace and intentionally use the same temporary runtime override as omniwmctl workspace move-to-monitor --force. They do not rewrite the workspace’s Home Monitor or swap workspaces, and unsafe fullscreen, hidden-app, scratchpad, or focus states still block the move.
The window-to-monitor actions send the focused window directly to the current workspace on the adjacent routed display, independently of Move Window Across Monitor at Edge. They do not wrap when no monitor exists in that direction. Follow Window to Monitor controls whether focus follows the window; when it is off, you remain in the source workspace.
Layout
Section titled “Layout”| Action | Default Shortcut | Layout |
|---|---|---|
| Toggle OmniWM Fullscreen | Option + Return |
Shared |
| Toggle Native Fullscreen | Unassigned |
Shared |
| Balance Sizes | Option + Shift + B |
Shared |
| Cycle Size Forward | Option + . |
Shared |
| Cycle Size Backward | Option + , |
Shared |
| Move to Root | Unassigned |
Dwindle |
| Toggle Split | Unassigned |
Dwindle |
| Swap Split | Unassigned |
Dwindle |
| Grow Horizontally / Vertically | Unassigned |
Dwindle |
| Shrink Horizontally / Vertically | Unassigned |
Dwindle |
| Grow / Shrink Focused Window | Unassigned |
Dwindle |
| Preselect Left / Right / Up / Down | Unassigned |
Dwindle |
| Clear Preselection | Unassigned |
Dwindle |
| Raise All Floating Windows | Option + Shift + R |
Shared |
| Toggle Floating/Tiled Focus | Unassigned |
Shared |
| Rescue Off-Screen Floating Windows | Unassigned |
Shared |
| Toggle Focused Window Floating | Unassigned |
Shared |
| Toggle Scratchpad 1-10 Assignment for Focused Window | Unassigned |
Shared |
| Toggle Scratchpad 1-10 | Unassigned |
Shared |
| Toggle Workspace Layout | Option + Shift + L |
Shared |
Container and Column
Section titled “Container and Column”| Action | Default Shortcut | Layout |
|---|---|---|
| Move Container Left / Right | Control + Option + Shift + Left / Right Arrow |
Shared |
| Move Container Up / Down | Unassigned |
Dwindle |
| Toggle Tabbed Mode for Focused Column | Option + T |
Niri |
| Toggle Container Full Primary Span | Option + Shift + F |
Niri |
| Expand Container to Available Primary Span | Control + Option + F |
Niri |
| Move Focused Column to First / Last Position | Control + Option + Home / End |
Niri |
| Move Focused Column to Position 1-9 | Unassigned |
Niri |
| Shrink / Grow Container Primary Span | Option + - / Option + = |
Niri |
| Shrink / Grow Window Secondary Span | Option + Shift + - / Option + Shift + = |
Niri |
| Shrink / Grow Window Primary Span | Unassigned |
Niri |
| Reset Window Secondary Span | Control + Option + R |
Niri |
| Cycle Window Primary Span Forward / Backward | Unassigned |
Niri |
| Cycle Window Secondary Span Forward / Backward | Unassigned |
Niri |
| Center Focused Column | Unassigned |
Niri |
| Center Visible Columns | Unassigned |
Niri |
Niri grow/shrink actions use a configurable increment, defaulting to 5% instead of 10%. Change Resize Increment in Niri settings or [niri].resizeStepPercent in TOML (1–100). Explicit omniwmctl size arguments keep their specified amounts.
Consume or Expel Window Left / Right exist as automation-only actions. They are reachable from omniwmctl but never appear in Settings > Keyboard Shortcuts, because they intentionally cannot be bound to a shortcut.
The daily Focus and Move shortcuts adapt to the active layout and Niri orientation. In horizontal Niri orientation, Move Left / Right consumes or expels across columns while Move Up / Down reorders within a column. Vertical orientation rotates those roles: Move Up / Down consumes or expels across rows while Move Left / Right reorders within a row.
Dwindle Groups
Section titled “Dwindle Groups”Dwindle groups use the existing Focus and Move bindings, so there are no separate group shortcuts to memorize. Only the active member occupies the tile; the other members stay hidden and the clickable tab rail shows their order.
| Goal | Default Shortcut | Behavior |
|---|---|---|
| Focus another tile | Option + Arrow Keys |
Left / Right are always spatial. Up / Down are spatial for a singleton tile. |
| Select the next / previous tab | Option + Down / Up Arrow |
Within a group, Down advances and Up goes back. At the group edge OmniWM tries a spatial tile, then the configured monitor transition, and wraps locally only when neither exit succeeds. |
| Join a singleton into a tile or group | Option + Shift + Arrow Keys |
Joins the focused singleton with the touching tile in that direction. |
| Extract the active tab | Option + Shift + Arrow Keys |
When the focused tile is grouped, extracts only its active tab onto the requested side. |
| Move the complete tile or group | Control + Option + Shift + Left / Right Arrow |
Move Container swaps the whole structure. Up / Down are advanced, unassigned Dwindle actions. |
| Select an exact tab | Click its tab rail item | Reveals and focuses that member without changing the group order. |
Moving a tab directly from one existing group into another is intentionally a two-step operation: extract it first, then move the resulting singleton toward the destination group. A singleton at a genuine workspace edge can still use the normal cross-monitor Move behavior; a rejected group mutation does not fall through to tile swapping or monitor movement.
The unassigned advanced actions are available in Settings > Keyboard Shortcuts. Focus Next / Previous Window (Wrap) always wraps within the active Niri column or Dwindle group. Move Window to Previous / Next Position changes the active member’s position by one without wrapping. Move Container is the whole-structure escape hatch and never transfers to another monitor at a workspace edge. Dwindle join/extract and Move Container operations are intentionally unavailable while Overview is open; leave Overview before changing a Dwindle tree.
Quake Terminal (Inside Terminal)
Section titled “Quake Terminal (Inside Terminal)”These are the default shortcuts inside the Quake Terminal. Customize tab and pane shortcuts in your Ghostty configuration.
| Action | Default Shortcut |
|---|---|
| New Tab | Cmd + T |
| Close Tab | Cmd + W |
| Next Tab | Cmd + Shift + ] |
| Previous Tab | Cmd + Shift + [ |
| Next Tab (Alt) | Ctrl + Tab |
| Previous Tab (Alt) | Ctrl + Shift + Tab |
| Select Tab 1-9 | Cmd + 1-9 |
| Split Pane (Horizontal) | Cmd + D |
| Split Pane (Vertical) | Cmd + Shift + D |
| Close Pane | Cmd + Shift + W |
| Equalize Splits | Cmd + Shift + = |
| Navigate Pane | Cmd + Option + Arrow Keys |