Flow through columns
Focus, move, resize, group, or expand windows without rebuilding the whole desktop. When a stack runs out of vertical room, Nehir tabs the overflow automatically.
Niri-style window management for macOS
Nehir arranges your Mac windows in scrolling columns, so your workspace can grow without squeezing every app into a grid. Keyboard-first, and yours to script.
$ brew install --cask guria/tap/nehir The idea
Traditional tiling managers divide one screen into smaller and smaller rectangles. Nehir gives windows room to breathe. Apps live in columns that scroll horizontally across the display, with stacked and tabbed windows inside each column.
Nehir is Turkish for river — windows flow in columns, scrolling horizontally across your screen.
Focus, move, resize, group, or expand windows without rebuilding the whole desktop. When a stack runs out of vertical room, Nehir tabs the overflow automatically.
Keep projects separated across named workspaces and displays. Switch instantly, move a window with Shift, or move an entire column when the structure needs to change.
Open Overview for a bird's-eye view, glance at the per-monitor workspace bar, or find any action through the fuzzy command palette.
Keyboard model
Nehir's defaults group related actions into predictable layers. Navigate with ⌥⌘, add ⇧ to bring the focused window along, and reach for Hyper when you're reshaping structure.
Built for real multi-window work
Nehir is for the moments when a fixed grid stops scaling: a terminal beside an editor, reference material one column away, comms on another workspace, and the next task already waiting offscreen.
Configuration
Settings, hotkeys, workspaces, app rules, and monitor overrides live
in focused files under ~/.config/nehir/. Keep
them in your dotfiles, split machine-local settings from shared rules,
and see edits apply live — no restart.
├── settings.toml ├── hotkeys.toml ├── workspaces.toml ├── apprules.d/ └── monitors.d/
Automation
Use hotkeys and the command palette day to day. Reach for
nehirctl when you want scripts, queries, event
subscriptions, shell completion, or Raycast commands.
$ nehirctl command focus left $ nehirctl query windows --visible --format table $ nehirctl subscribe active-workspace,windows-changed IPC runs over an optional, authenticated local Unix socket — disabled by default until you turn it on.
Opinionated by design
Nehir narrows its scope to Niri-style scrolling columns instead of carrying multiple layout systems. Motion, focus behavior, workspace navigation, configuration, and automation are all designed around that single workflow. Focused, not feature-poor.
Inspired by Niri's interaction model · built on the macOS window-management foundation of OmniWM · an independent open-source project.
Ready for macOS 15+
Install the signed and notarized app with Homebrew, grant Accessibility permission, and start with the built-in shortcut model.
$ brew install --cask guria/tap/nehir $ brew install --cask guria/tap/nehir@rc Then grant access at System Settings → Privacy & Security → Accessibility.
Honest notes
No. Nehir is an independent, native macOS app that adopts Niri's scrolling-column interaction model. It is not affiliated with Niri or endorsed by it.
macOS only lets an app move and resize other applications' windows through the Accessibility API. Grant it once at System Settings → Privacy & Security → Accessibility.
macOS has no fully supported way to hide external app windows offscreen. Nehir parks them near the screen edge; a fixed side Dock or side-by-side displays can expose a visible strip. Vertical arrangement and an auto-hide Dock give the cleanest scroll. An experimental Dock Shield exists for fixed side Docks.
Yes. Every binding lives in readable TOML you can edit and sync in your dotfiles. Beyond hotkeys, nehirctl offers queries, event subscriptions, and shell completion, plus a bundled Raycast extension.
On a clean quit Nehir restores parked and offscreen windows to their saved positions. A crash or force quit bypasses that shutdown cleanup, so Nehir cannot intervene. To bring a window back, use the macOS system shortcut Globe/fn + Control + C — the built-in Center action recovers offscreen windows.
Yes — GPL-2.0-only. Built in Swift 6 on AppKit, the Accessibility APIs, and SkyLight, with the Niri layout engine as a core subsystem.
$ brew install --cask guria/tap/nehir