niri keybindings on a Mac
In Ribbon, ⌃⌥ (Control + Option) plays the part of niri's Mod. Focus, width, centre, float and tabs map almost one to one. Moving windows adds ⇧ instead of Ctrl, and workspace keys go to macOS Spaces because Ribbon has no workspaces of its own.
Why Control + Option and not ⌘
On Linux, niri can use Super as Mod because almost nothing else claims it. A Mac has no free modifier like that:
- ⌘ belongs to apps. ⌘H hides, ⌘L focuses the address bar, ⌘R reloads. A window manager on ⌘ would break shortcuts you use all day.
- ⌥ on its own types characters. On a US layout ⌥H types ˙ and ⌥L types ¬, and ⌥← / ⌥→ jump by word in every text field.
- ⌃⌥ together is almost unused. Very few apps bind it, and it's easy to hold with one hand.
So Ribbon's defaults are ⌃⌥ plus one key, and ⌃⌥⇧ plus the same key to move. Every action can be rebound on the Shortcuts page, and each can have several chords.
Navigation
| niri | Action | Ribbon |
|---|---|---|
Mod+H / Mod+L (or Left / Right) | Focus column left / right | ⌃⌥H / ⌃⌥L or ⌃⌥← / ⌃⌥→ |
Mod+J / Mod+K (or Down / Up) | Focus window down / up | ⌃⌥J / ⌃⌥K or ⌃⌥↓ / ⌃⌥↑ (in a stack) |
Mod+Home / Mod+End | First / last column | ⌃⌥⌘← / ⌃⌥⌘→ |
Mod+WheelScrollRight / Left | Scroll columns | Hold ⌥ and scroll sideways (modifier is configurable) |
| None | Jump to window N | ⌃⌥1–⌃⌥9 |
Moving windows
| niri | Action | Ribbon |
|---|---|---|
Mod+Ctrl+H / Mod+Ctrl+L | Move column left / right | ⌃⌥⇧H / ⌃⌥⇧L (or arrows) |
Mod+Ctrl+J / Mod+Ctrl+K | Move window down / up | ⌃⌥⇧J / ⌃⌥⇧K (in a stack) |
Mod+Ctrl+Home / End | Move column to first / last | ⌃⌥P / ⌃⌥⇧P (move the window to the first / last position) |
Width and height
| niri | Action | Ribbon |
|---|---|---|
Mod+R | Next preset width | ⌃⌥R |
Mod+Shift+R | Previous preset width | No equivalent |
Mod+F | Maximize column | ⌃⌥F (full width) |
Mod+C | Centre column | ⌃⌥C |
Mod+Ctrl+C | Centre visible columns | No equivalent |
Mod+Minus / Mod+Equal | Width −10% / +10% | ⌃⌥- / ⌃⌥= |
Mod+Shift+Minus / Equal | Height −10% / +10% | ⌃⌥⇧- / ⌃⌥⇧= (in a stack) |
Mod+Ctrl+R | Reset window height | Closest: ⌃⌥0 (equalize heights) |
Mod+Ctrl+Shift+R | Preset window heights | No equivalent |
Mod+Ctrl+F | Expand to available width | No equivalent |
Mod+M | Maximize to edges | No equivalent |
Mod+Shift+F | Fullscreen | No Ribbon action; use macOS full screen (green button) |
Ribbon adds one niri doesn't have: ⌃⌥⇧0 makes every column the same width.
Columns, tabs and floating
| niri | Action | Ribbon |
|---|---|---|
Mod+BracketLeft | Consume or expel left | ⌃⌥] stacks into the left column; ⌃⌥⇧[ pops out left |
Mod+BracketRight | Consume or expel right | ⌃⌥[ stacks into the right column; ⌃⌥⇧] pops out right |
Mod+Comma | Consume into column | ⌃⌥] or ⌃⌥[ |
Mod+Period | Expel from column | ⌃⌥⇧] |
Mod+W | Toggle tabbed column | ⌃⌥⇧T |
Mod+V | Toggle floating | ⌃⌥T |
Mod+Shift+V | Switch focus floating / tiling | No equivalent |
Two differences to know. First, Ribbon's bracket keys are mirrored from niri's: the right bracket stacks into the left column. Second, niri's consume pulls the next window into the focused column, while Ribbon moves the focused window into its neighbour. The result is the same stack, built from the other side.
Monitors
| niri | Action | Ribbon |
|---|---|---|
Mod+Shift+H/J/K/L (or arrows) | Focus monitor | No equivalent; click or move the pointer |
Mod+Shift+Ctrl+H/J/K/L (or arrows) | Move column to monitor | ⌃⌥N sends to the next display only |
There's also an unbound action, "Send to next display, stay here", if you want the window to go but your focus to stay put.
Workspaces, overview and system
Ribbon has no workspaces. Each macOS Space has its own strip, so these binds go to macOS:
| niri | Action | On a Mac |
|---|---|---|
Mod+U / Mod+I (Page_Down / Up) | Workspace down / up | macOS ⌃→ / ⌃← |
Mod+1..9 | Workspace N | macOS ⌃1–⌃9, once enabled |
Mod+Ctrl+U/I, Mod+Ctrl+1..9 | Move column to workspace | No shortcut; drag the window in Mission Control |
Mod+Shift+U / I | Move workspace | Drag Spaces in Mission Control |
Mod+O | Overview | No equivalent; hold ⌃⌥ to keep the strip indicator up |
Mod+Q | Close window | The app's own ⌘W |
Mod+T / Mod+D | Terminal / launcher | Spotlight, ⌘Space |
Mod+Shift+Slash | Hotkey overlay | No equivalent; see the Shortcuts page |
Print | Screenshot | macOS ⌘⇧5 |
Mod+Escape | Inhibit shortcuts | Closest: ⌃⌥Q pauses Ribbon |
Mod+Shift+E | Quit | Quit Ribbon from its menu bar item |
Important: in Ribbon, ⌃⌥1–⌃⌥9 jump to the 1st to 9th window on the strip, not a workspace. If your fingers expect niri's Mod+1, turn on "Switch to Desktop 1" and the rest under System Settings → Keyboard → Keyboard Shortcuts → Mission Control. Then ⌃1, ⌃2 and so on switch Spaces.
Touchpad and mouse
| niri | On a Mac with Ribbon |
|---|---|
| 3-finger horizontal swipe scrolls the view | Ribbon's swipe (3 fingers by default, or 4), following your fingers |
| 3-finger vertical swipe switches workspace | macOS 4-finger horizontal swipe switches Spaces |
| 4-finger vertical swipe opens overview | macOS Mission Control swipe up |
| Mod + middle-drag scrolls the view | Hold the scroll-wheel modifier and scroll sideways |
| Mod + left-drag moves, right-drag resizes | No equivalent (dragging tiles in the strip indicator does reorder) |
| Top-left hot corner opens overview | macOS Hot Corners → Mission Control |
For Ribbon's swipe to work, set macOS's "Swipe between full-screen applications" to four fingers or off. The setup guide walks through it.
Rebinding to feel more like niri
The one habit that trips people up is moving. niri adds Ctrl to move (Mod+Ctrl+H) and Shift for monitors. Ribbon adds Shift to move (⌃⌥⇧H), and its monitor action is a single key, so nothing clashes.
If you'd rather keep "Mod plus one more modifier" in your hands, open the Shortcuts page and record a second chord for Move window left and Move window right, such as ⌃⌥⌘H and ⌃⌥⌘L. The old chords keep working alongside. Check that no app you use already claims the new chord. The recorder works on any keyboard layout.
The rest of niri's config, from gaps to centring, is covered in niri config on macOS, and the bigger picture is in niri for Mac. Coming from GNOME instead? PaperWM for Mac maps PaperWM's keys the same way. Practise the keys in the live demo on the home page, then buy Ribbon when they feel right.
FAQ
What is niri's Mod key on a Mac?
Ribbon uses Control + Option (⌃⌥) as the equivalent. ⌘ is left to apps, and Option alone types characters.
Does ⌃⌥1 switch workspaces like niri's Mod+1?
No. In Ribbon it focuses the first window on the strip. To switch Spaces by number, enable the "Switch to Desktop" shortcuts in macOS Keyboard Shortcuts → Mission Control.
Is there an overview like niri's Mod+O?
No. Ribbon has a strip indicator with app icons that you can keep up by holding ⌃⌥ and click to jump. macOS Mission Control (⌃↑) shows every window.
Can I change Ribbon's shortcuts to match niri exactly?
Mostly. Every action can be rebound and given several chords. Actions Ribbon doesn't have, like focusing a monitor or moving a window to a workspace, can't be added by rebinding.
Does the three-finger swipe work like niri's?
Yes. A three-finger horizontal swipe slides the strip with your fingers and settles on a column. macOS must have its full-screen swipe moved to four fingers or turned off first.