niri for Mac: scrollable tiling on macOS
niri is a Wayland compositor for Linux and won't run on macOS. Here's how to get niri's scrollable-tiling layout on a Mac with a native app.
By Chethan Kumar S N · Updated
niri is a scrollable-tiling Wayland compositor for Linux. Windows are arranged in columns on an infinite strip that scrolls sideways, and opening a new window never resizes the ones you already have. If that’s how you like to work, a regular Mac with its overlapping windows feels like a step back.
niri itself won’t run on macOS, but its layout can.
Why niri can’t run on a Mac
On Linux, niri is the display server: it draws every window and decides where it goes. macOS’s window server is part of the operating system and can’t be swapped out. A Mac app can, though, ask for the Accessibility permission and then move and resize other apps’ windows. Every scrolling window manager for macOS works that way, and so does Ribbon.
niri’s ideas, and how Ribbon handles them
| niri | Ribbon on macOS |
|---|---|
| Windows are columns on an infinite horizontal strip | The same: every window gets a full-height column, and the strip runs past both edges of the screen |
| Opening a window never resizes the others | The same: a new window slides in beside the focused one |
| Preset column widths | ⌃⌥R cycles ⅓, ½ and ⅔ of the screen; ⌃⌥F fills it and puts it back |
| Focus and move by keyboard | ⌃⌥ ← → to focus, add ⇧ to carry the window, ⌃⌥1–9 to jump |
| Touchpad gestures to scroll the strip | Three- or four-finger swipes that follow your fingers one to one |
| Each monitor has its own strip | The same, and ⌃⌥N sends a window to the next display |
| Floating windows | Dialogs and fixed-size windows float on their own; ⌃⌥T floats any window |
| Config in a KDL file | A Settings window, plus ribbon:// URLs, a CLI and Raycast scripts |
Some of niri’s features depend on owning the display server and have no exact Mac equivalent, like its own animations for every window, or stacking several windows in one column. Ribbon keeps the part that changes your day: a strip of full-size windows you glide along.
What’s different on a Mac
A few things work differently because of macOS:
- Spaces and full screen. macOS has its own Spaces and full-screen apps. Ribbon keeps full-screen, minimised and hidden (⌘H) windows in their place on the strip, and warns you if a three-finger swipe is also switching full-screen apps.
- Apps that resist resizing. Some Mac windows have a fixed size or a minimum width. Ribbon leaves fixed-size windows floating.
- Edge tiling. macOS has its own tiling when you drag a window to the screen’s edge. Ribbon shows you where to turn it off so the two don’t fight.
Speed
On Linux, niri composites every frame itself. On a Mac, an app has to move other apps’ windows through the Accessibility API, which is slower. Ribbon gets around that by moving windows from one queue per app and only touching the two or three windows on screen while the strip scrolls. In its own benchmark, 95% of frames need about a millisecond of work or less. There’s more on the home page.
Try it
Ribbon runs on macOS 14 Sonoma or later on Apple silicon. The trial lasts 7 days, and a licence is $15 once after that. You can also drive the strip right on the home page first. Coming from GNOME instead? See PaperWM for Mac.
Questions
Can niri run on macOS?
No. niri is a Wayland compositor, so it replaces the whole display server on Linux. macOS has its own window server that can't be replaced. To get niri's layout on a Mac you need an app that arranges windows through the Accessibility API, such as Ribbon.
What's the closest thing to niri on a Mac?
A scrolling window manager. Ribbon puts every window in a full-height column on an infinite horizontal strip, the same model niri calls scrollable tiling, with keyboard shortcuts and a trackpad swipe that follows your fingers.
Does Ribbon need a config file like niri?
No. Everything is set in Ribbon's Settings window: shortcuts, gaps, widths and per-app rules. There's also a ribbon:// URL scheme and a command-line tool if you want to script it.
Ready? Buy Ribbon for $15, or read all the guides.