Guide

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

niriRibbon on macOS
Windows are columns on an infinite horizontal stripThe same: every window gets a full-height column, and the strip runs past both edges of the screen
Opening a window never resizes the othersThe 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 stripThree- or four-finger swipes that follow your fingers one to one
Each monitor has its own stripThe same, and ⌃⌥N sends a window to the next display
Floating windowsDialogs and fixed-size windows float on their own; ⌃⌥T floats any window
Config in a KDL fileA 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:

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.