# Niri keybindings on Mac: every default bind, mapped

Source: https://chainyourmac.com/niri-keybindings-mac  
Updated: 2026-10-06 · Author: Ahmed Gagan (maker of ChainYourMac)

Your hands already know niri. This is the full list of niri's default binds — straight from its `default-config.kdl` — and the closest macOS equivalent for each, including the ones that **don't** translate.

> **tl;dr:** niri can't run on macOS ([here's why](https://chainyourmac.com/niri-for-mac)), but its keyboard layout can. In [ChainYourMac](https://chainyourmac.com/) 2.1, niri's `Mod` becomes **⌃⌥ (Control+Option)** and niri's `Mod+Ctrl` "move" layer becomes **⌃⌥⇧**. Focus, move, preset widths, full width, center, stacking, tabs and floating all have direct equivalents. Workspaces, the Overview and app launching go to macOS's own tools instead.

## Where these binds come from

The niri column below is taken from niri's `resources/default-config.kdl` on the main branch (checked 6 October 2026; the latest release is v26.04). In niri, `Mod` is Super when it runs as your session and Alt when it runs nested. Your own config may differ, since niri binds are entirely user-defined.

The ChainYourMac column shows the **defaults for new installs of 2.1**. If you upgraded from 2.0 you keep your old shortcuts, and the Shortcuts page offers a one-click switch to this set. Every binding can be re-recorded, and one action can have several shortcuts. That's how both arrows and H/L work at the same time, just like niri.

## Why ⌃⌥ instead of ⌘

On Linux, Super is mostly unused by apps, which is why niri can claim it. On a Mac, ⌘ is the app modifier. ⌘W closes, ⌘H hides, ⌘[ goes back, and the list goes on. Plain ⌥ types characters (⌥E, ⌥U) and ⌥←/→ jumps by word in every text field. **Control+Option** is the combination macOS and apps leave free, so it's the closest thing a Mac has to a "Super layer". If you use Karabiner-Elements or a Hyper key, you can record those combinations instead.

## Navigation: focus and move

| Action | niri default | ChainYourMac 2.1 |
|---|---|---|
| Focus column left / right | Mod+Left / Mod+Right, Mod+H / Mod+L | ⌃⌥← / ⌃⌥→, ⌃⌥H / ⌃⌥L |
| Focus window up / down (in a column) | Mod+Up / Mod+Down, Mod+K / Mod+J | ⌃⌥↑ / ⌃⌥↓, ⌃⌥K / ⌃⌥J |
| Focus first / last column | Mod+Home / Mod+End | ⌃⌥⌘← / ⌃⌥⌘→ |
| Move column left / right | Mod+Ctrl+Left / Right, Mod+Ctrl+H / L | ⌃⌥⇧← / ⌃⌥⇧→, ⌃⌥⇧H / ⌃⌥⇧L |
| Move window up / down (in a column) | Mod+Ctrl+Up / Down, Mod+Ctrl+K / J | ⌃⌥⇧↑ / ⌃⌥⇧↓, ⌃⌥⇧K / ⌃⌥⇧J |
| Move column to first / last | Mod+Ctrl+Home / Mod+Ctrl+End | ⌃⌥⌘⇧← / ⌃⌥⌘⇧→ |
| Focus column with mouse wheel | Mod+WheelScrollLeft / Right | Trackpad swipe, or click the window |

The pattern is easy to remember: niri adds Ctrl to *move* what Mod *focuses*, and ChainYourMac adds ⇧. You can also drag a window by its title bar onto another column to reorder, which is the Mac version of niri's Mod+drag.

## Column width and height

| Action | niri default | ChainYourMac 2.1 |
|---|---|---|
| Cycle preset column widths | Mod+R | ⌃⌥R |
| Cycle presets backwards | Mod+Shift+R | No separate action (⌃⌥R cycles forward) |
| Maximize column | Mod+F | ⌃⌥F (full width) |
| Expand to available width | Mod+Ctrl+F | No direct equivalent |
| Column width −10% / +10% | Mod+Minus / Mod+Equal | ⌃⌥− / ⌃⌥= (narrower / wider) |
| Window height −10% / +10% | Mod+Shift+Minus / Mod+Shift+Equal | ⌃⌥⇧− / ⌃⌥⇧= (shorter / taller) |
| Reset window height | Mod+Ctrl+R | ⌃⌥0 (equalize heights in the column) |
| Center column | Mod+C | ⌃⌥C |
| Center visible columns | Mod+Ctrl+C | No direct equivalent |

The width presets themselves are configurable in both. niri's default list is 1/3, 1/2 and 2/3. ChainYourMac's is 25, 33, 50, 67 and 75%, and you can change it under "Preset Window Widths". For a niri-identical feel, set it to 33/50/67. See [niri config on macOS](https://chainyourmac.com/niri-config-macos).

## Stacking, tabs and floating

| Action | niri default | ChainYourMac 2.1 |
|---|---|---|
| Consume or expel window left | Mod+BracketLeft | ⌃⌥] stacks into the left column; ⌃⌥⇧[ pops out to the left |
| Consume or expel window right | Mod+BracketRight | ⌃⌥[ stacks into the right column; ⌃⌥⇧] pops out to the right |
| Consume window into column | Mod+Comma | No "pull the neighbour in" action; stack the focused window instead with ⌃⌥] or ⌃⌥[ |
| Expel window from column | Mod+Period | ⌃⌥⇧] (pop out) |
| Tabbed column display | Mod+W | ⌃⌥⇧T |
| Toggle floating | Mod+V | ⌃⌥T |
| Switch focus floating ↔ tiling | Mod+Shift+V | No direct equivalent (click, or ⌘`/⌘Tab) |

niri combines "consume" and "expel" into one key that does whichever makes sense. ChainYourMac keeps them separate: plain ⌃⌥ with a bracket *stacks*, and adding ⇧ *pops out*. Inside a stack, ⌃⌥⇧↑/↓ reorders windows, just like niri's move-window-up/down.

## Monitors

| Action | niri default | On macOS |
|---|---|---|
| Focus monitor left / right / up / down | Mod+Shift+arrows (or H/J/K/L) | No dedicated key in 2.1; click a window on the other display |
| Move column to monitor | Mod+Shift+Ctrl+arrows | ⌃⌥N sends the window to the next display |
| Power off monitors | Mod+Shift+P | macOS: lock the screen with ⌃⌘Q |

Like niri, every display has its own strip, and windows never spill onto the neighbour. Dragging a window onto another display also moves it into that display's strip.

## Workspaces, overview and system keys

This is where the two worlds part. niri owns the whole session, so its config also binds workspaces, launching apps and quitting. On a Mac those belong to macOS:

| Action | niri default | On macOS |
|---|---|---|
| Focus workspace up / down | Mod+U / Mod+I, Mod+Page_Up/Down | ⌃← / ⌃→ (switch Space), or a swipe |
| Focus workspace 1–9 | Mod+1 … Mod+9 | ⌃1 … ⌃9 once enabled in Keyboard Shortcuts → Mission Control |
| Move column to workspace | Mod+Ctrl+1…9, Mod+Ctrl+U/I | Drag the window to a Space in Mission Control |
| Overview | Mod+O, or 4-finger swipe up | Mission Control (⌃↑ or a swipe up). ChainYourMac also shows a strip minimap while you navigate |
| Close window | Mod+Q | ⌘W (⌘Q quits the app) |
| Fullscreen window | Mod+Shift+F | ⌃⌘F (native full screen, which ChainYourMac leaves alone) |
| Spawn terminal / launcher | Mod+T / Mod+D | Spotlight (⌘Space), Raycast or Alfred |
| Show hotkey overlay | Mod+Shift+/ | Shortcuts page in the ChainYourMac app |
| Quit the compositor | Mod+Shift+E | ⌃⌥Q stops the window manager |

## Touchpad and mouse gestures

niri's wiki lists these touchpad gestures: three-finger horizontal swipes move the view, three-finger vertical swipes switch workspaces, and four-finger vertical swipes open the Overview. On a Mac, macOS already uses three-finger swipes (and often four) for Spaces and Mission Control, so ChainYourMac's strip swipe defaults to **four fingers horizontally**. The strip follows your fingers 1:1 and then glides to the nearest window. You can switch it to three fingers, and the in-app Mac Setup screen checks for clashing macOS settings ([setup guide](https://chainyourmac.com/setup)). For the mouse, niri's Mod+drag to move a window becomes dragging by the title bar onto another column.

## Setting niri-style binds by hand

You never need to touch a file, since the shortcut recorder handles everything. But if you keep dotfiles, ChainYourMac's optional TOML config (`~/.paneru`) uses readable binding names:

```
[bindings]
window_focus_west  = ["ctrl + alt - leftarrow", "ctrl + alt - h"]
window_focus_east  = ["ctrl + alt - rightarrow", "ctrl + alt - l"]
window_swap_west   = ["ctrl + alt + shift - leftarrow", "ctrl + alt + shift - h"]
window_swap_east   = ["ctrl + alt + shift - rightarrow", "ctrl + alt + shift - l"]
window_resize      = "ctrl + alt - r"       # niri: switch-preset-column-width
window_fullwidth   = "ctrl + alt - f"       # niri: maximize-column
window_center      = "ctrl + alt - c"       # niri: center-column
window_tabbed      = "ctrl + alt + shift - t" # niri: toggle-column-tabbed-display
window_manage      = "ctrl + alt - t"       # niri: toggle-window-floating
```

Other names include `window_focus_first`/`_last`, `window_swap_first`/`_last`, `window_wider`, `window_narrower`, `window_taller`, `window_shorter`, `window_equalize`, `window_stack`, `window_unstack`, `window_consume_east`, `window_expel_west` and `window_nextdisplay`. For the layout options (widths, gaps, centering), continue to [niri config on macOS](https://chainyourmac.com/niri-config-macos).

**Keep the niri muscle memory on your Mac.** ChainYourMac's defaults follow niri's layout on Control+Option, and every shortcut can be re-recorded — including several keys per action. Price and checkout: https://chainyourmac.com/#pricing (one-time purchase, lifetime license; macOS 13+ on Apple silicon).

## FAQ

### What is the Mod key in niri?

niri's wiki defines `Mod` as Super (the Windows/logo key) when niri runs as a normal session on a TTY, and Alt when niri runs nested in a window. Since niri 25.05 you can choose a different Mod key in the config's `input` section.

### Why doesn't ChainYourMac use ⌘ as the Mod key?

On a Mac, ⌘ is the app modifier — ⌘W, ⌘Q, ⌘H, ⌘[ and ⌘] already mean something in nearly every app. Plain ⌥ types special characters and moves the cursor by word. Control+Option is free in almost every app, so ChainYourMac 2.1 uses it for everything. You can re-record any shortcut, including onto ⌘ if you prefer.

### Can I make ChainYourMac use exactly niri's keys?

As close as macOS allows. Record any shortcut in Settings → Shortcuts; an action can hold several bindings. Or edit the optional TOML file, e.g. `window_swap_west = ["ctrl + alt + shift - leftarrow", "ctrl + alt + shift - h"]`. Actions niri has but ChainYourMac doesn't (like the Overview) can't be bound.

### What's the niri touchpad gesture equivalent on Mac?

niri scrolls the view with a three-finger horizontal swipe and switches workspaces with a three-finger vertical swipe. In ChainYourMac a four-finger horizontal swipe (three optional) scrolls the strip under your fingers; macOS keeps its own vertical swipes for Mission Control and Spaces. [The setup guide](https://chainyourmac.com/setup) lists which macOS gesture settings to change.

### Do the shortcuts work on AZERTY, QWERTZ or Dvorak?

Yes. The shortcut recorder records the key you actually press on your layout.

## Related

- [Niri for macOS](https://chainyourmac.com/niri-for-mac) — Can niri run on a Mac? Every way to get the niri workflow, compared.
- [Niri config on macOS](https://chainyourmac.com/niri-config-macos) — niri config.kdl options and their Mac equivalents.
- [Niri vs PaperWM](https://chainyourmac.com/niri-vs-paperwm-mac) — The two Linux originals compared — and what runs on macOS.
- [Best scrolling window managers for Mac](https://chainyourmac.com/best-scrolling-window-managers-for-mac) — Every option in 2026, ranked honestly — free ones included.
