yabai and Ribbon disagree about one thing: what should happen when a window opens. yabai splits the focused tile, so everything shrinks. Ribbon adds a column next to the focused one, so nothing shrinks. Decide which you want, and most of this page answers itself.
The rest is about scripting, SIP and money. yabai is free and the most scriptable window manager on macOS. We'd recommend it without hesitation to anyone who enjoys shell configuration. Ribbon is paid, configured from a settings window, and never asks you to touch SIP.
yabai facts were checked on 1 November 2026 against its README, its SIP wiki page and its releases. Note that the repository now lives at asmvik/yabai, and the old koekeishiya URL redirects there. Ribbon facts come from meetribbon.app. We make Ribbon.
yabai in 2026, briefly
- Latest release: v7.1.25 (8 May 2026). MIT licence.
- Supported macOS: on Intel, Big Sur 11 through Tahoe 26. On Apple silicon, Monterey 12 through Tahoe 26.
- Control: a command-line interface. Keyboard shortcuts come from a separate tool such as skhd.
- Required settings: Accessibility permission, plus "Displays have separate Spaces" turned on. The README also recommends turning off "Automatically rearrange Spaces based on most recent use".
- Known caveat: apps that use native macOS tabs (Terminal, Finder) "do not behave correctly when creating tabs", according to the README.
What SIP actually changes in yabai
You don't need to disable SIP to tile with yabai. You need it only for the extras that inject a scripting addition into Dock.app. The yabai wiki lists exactly these:
| Needs SIP partly disabled | Works with SIP on |
|---|---|
| Move, swap, create and destroy Spaces | BSP, stack and float layouts |
| Remove window shadows | Focus, swap, warp and resize windows |
| Window transparency | Rules and signals |
| Window animations | Multi-display tiling |
| Scratchpad windows | Moving windows with the CLI |
| Window layers (topmost or on desktop) | |
| Sticky windows across Spaces | |
| Picture-in-picture for any window |
Disabling SIP partly means booting into recovery and running csrutil with flags. On Apple silicon with macOS 13 or later, that's csrutil enable --without fs --without debug --without nvram, per the wiki. On a company Mac managed by IT, that's usually off the table. Ribbon never needs SIP changed, so the question never comes up (yabai on Mac, SIP in detail).
The 9 differences
| # | Difference | yabai | Ribbon |
|---|---|---|---|
| 1 | Layout when a window opens | Splits the focused tile (BSP). Everything gets smaller | Opens a new column beside the focused one. Others keep their width |
| 2 | Layout options | bsp, stack, float per Space | Scrolling strip, stacks, tabbed columns, plus eight one-click layout pictures in the menu bar (2 across, 3 in a row, 4/5/6 grids and more) |
| 3 | Configuration | yabairc shell script plus skhdrc | Settings window, backed by ~/.config/ribbon/ribbon.toml for anyone who wants it in dotfiles |
| 4 | Keyboard shortcuts | Not built in; use skhd or similar | Built in. ⌃⌥ chords by default, with Arrows, Vim, Option and Command-Option styles |
| 5 | Trackpad | No built-in gestures | Three-finger swipe slides the strip, and so does Option + two-finger scroll (gestures guide) |
| 6 | SIP | Optional, but eight features need it partly off | Never touched. It uses a few private window-server calls, but no Dock injection |
| 7 | Scripting depth | Full CLI with queries, signals and rules; a whole ecosystem of dotfiles | ribbon:// URL scheme and ribbonctl for focus, move, width, float, jump and display. Much smaller, and no queries |
| 8 | Price | Free | One-time licence from $12 (1 Mac, founding price) (pricing) |
| 9 | macOS range | 11 or 12 through 26, on Intel and Apple silicon | macOS 14 Sonoma or later, Apple silicon only |
What they share: both need Accessibility, both need "Displays have separate Spaces" turned on, and both work with native macOS Spaces rather than replacing them.
The day-to-day feel
With yabai, open a terminal, then a browser, then docs, and each new window halves a tile. On a 14-inch MacBook, the fourth window is usually too narrow to read without zooming in on that tile. Power users get around this with rules, floating exceptions and per-Space layouts. It works, and it's a hobby in itself.
With Ribbon, the same four windows sit at widths you chose: the editor at two-thirds, the browser at half, docs and terminal each at a third. Only some of them are on screen at once, and ⌃⌥→ or a three-finger swipe brings the next one into view. Your windows never shrink. The trade-off is that they aren't all visible at once. The scrolling model explained.
If you used yabai for this, here is the Ribbon equivalent
| yabai habit | In Ribbon | Gap to know about |
|---|---|---|
window --focus west/east | ⌃⌥← / ⌃⌥→, or ribbonctl focus west | None |
window --swap | ⌃⌥⇧+arrow | None |
window --toggle float | ⌃⌥Space | Per-app float rules work differently: apps that refuse a resize twice are listed under Apps as "cannot be managed" and float |
--layout stack | ⌃⌥S stacks a window into the column on its left; ⌃⌥T turns a column into tabs | A stack lives inside one column, not across the whole Space |
window --display next | ⌃⌥N | None |
space --create / --destroy (SIP off) | Use macOS Mission Control | Ribbon doesn't create or destroy Spaces |
| Sticky or topmost windows (SIP off) | Not available | If you depend on these, stay on yabai |
| Signals that run scripts on window events | Not available | Ribbon's CLI is for sending commands, not for subscribing to events |
yabai -m query JSON | Not available | ribbonctl only sends commands. If your scripts read window state, stay on yabai |
Who should pick which
Choose yabai if:
- You enjoy shell configuration and want to script window behaviour (signals, queries, custom layouts).
- You control the Mac's security policy and want Space creation, sticky windows or no shadows.
- You need Intel or macOS 11–13 support.
- Free matters more than setup time.
Choose Ribbon if:
- Your Mac is managed by an employer and disabling SIP isn't allowed.
- You want shortcuts and gestures that work out of the box, without skhd.
- Your windows become unreadably narrow under BSP.
- You'd pay once to stop maintaining dotfiles.
Moving from yabai to Ribbon
- Stop yabai and skhd (
yabai --stop-service,skhd --stop-service) and remove them from login items. - If you disabled SIP only for yabai, you can turn it back on from recovery with
csrutil enable. Ribbon doesn't need it off. - Install Ribbon (setup), grant Accessibility, and pick the Vim style if your skhd config used HJKL.
- Rough translation:
yabai -m window --focus westbecomes ⌃⌥← (orribbonctl focus west).--swapbecomes ⌃⌥⇧ plus an arrow.--toggle floatbecomes ⌃⌥Space. Stack layout becomes a Ribbon stack (⌃⌥S). - Keep the hotkey tool you like.
ribbonctl(inside Ribbon.app/Contents/MacOS) can be called from skhd or Raycast.
Bottom line
yabai is a toolkit and Ribbon is a finished layout. If you want to build your own window manager out of shell scripts, yabai is still the best base on macOS. If you want ordered, full-size windows on a Mac where SIP stays on, try the Ribbon shortcuts in your browser, then download Ribbon.