Niri-style window management for macOS

Let your windows
flow.

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
arrows to flow
Terminal
Editor
Safari
Docs
Slack
Music
Xcode

Focus a window — columns scroll, tabs peel, nothing gets squeezed.

The idea

A workspace that moves with you

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.

01

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.

02

Organize with workspaces

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.

03

See everything

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

Learn the pattern, not a hundred shortcuts

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.

Focus a neighbor
Jump to workspace 33
Command paletteSpace
OverviewO
go therewithout Shift, focus follows
take it with youwith Shift, move the current window
Hyper
reshape structureControl+Option+Shift+Command

Built for real multi-window work

Editors, terminals, browsers, docs — one continuous strip

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

Your setup, in readable TOML

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.

  • Files are watched; edits apply immediately
  • One app rule per file for small, clean diffs
  • Unknown keys are preserved and surfaced as diagnostics
  • Explicit, documented migrations between versions

Automation

Native controls. Unix composability.

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

One layout model, deeply integrated

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 and grant Accessibility

Install the signed and notarized app with Homebrew, grant Accessibility permission, and start with the built-in shortcut model.

Stable
$ brew install --cask guria/tap/nehir
Preview / RC
$ brew install --cask guria/tap/nehir@rc

Then grant access at System Settings → Privacy & Security → Accessibility.

Honest notes

Set expectations before you install

Is Nehir a port of Niri?

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.

Why does Nehir need Accessibility permission?

macOS only lets an app move and resize other applications' windows through the Accessibility API. Grant it once at System Settings → Privacy & Security → Accessibility.

Why recommend an auto-hide Dock and vertical displays?

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.

Can I use my own hotkeys and automate it?

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.

What happens after a crash leaves a window offscreen?

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.

Is it open source?

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.

Give every window
room to flow.

$ brew install --cask guria/tap/nehir