Do what you loveeasier.faster.better.

OmniWM brings the Hyprland and Niri experience to macOS — scrolling columns, BSP tiling, a built-in Ghostty quake terminal, a unified command palette, and full IPC/CLI automation, with display-synced animations that feel native because they are.

brew install --cask omniwm

v0.7.3 · macOS 26+ (Tahoe) · Apple Silicon · GPL-2.0 · Free forever

Scrolling columns

Niri layout

A scrolling strip of columns or rows, depending on your monitor’s orientation setting. Focus glides the camera along the strip. Swap windows inside a container, cycle its size through presets, or resize both axes with the mouse — the whole strip re-flows live under your hand.

Learn more →
⌥+⇧+↓Swap down⌥+.Cycle width⌥+right-dragFluid resize⌥+→Focus right

Swap, cycle, or free-resize on both axes at once — the strip re-flows live.

Dwindle BSP

Hyprland layout

Hyprland-style dwindle tiling: every new window bisects the focused tile along its wider axis, spiraling naturally — half, quarter, eighth. Tune split ratios, preselect where the next window lands, group tiles into tabs, and take any tile fullscreen and back with one key.

Learn more →
⌥+⏎Fullscreen

Each window bisects the focused tile — ⌥⏎ takes any tile fullscreen and back.

Every workspace at once

Overview

Every window from every workspace flies into one searchable, zoomable view. Arrow around, send windows to other workspaces, merge them into columns, drag or close them — your whole layout is editable from above, then everything flies back to exactly where it belongs.

Learn more →
⌥+⇧+OOverview⌥+⇧+scrollZoom⌥+⇧+2To workspace 2⌥+⇧+←Merge into column⏎Focus

Every workspace at once — zoom with the scroll wheel, then move and merge windows with your shortcuts.

Windows · menus · apps · files

Command palette

Search windows, accessible menu items, clipboard history, OmniWM commands, applications, and files behind one hotkey. Browse apps and recent files, narrow files by type, or type to search. In Windows mode, Enter focuses; Shift+Enter summons the window right next to you.

Learn more →
⌃+⌥+SpacePalette⏎Jump⇧+⏎Summon

Jump to any window on any workspace — or summon it to your side instead.

Ghostty built in

Quake terminal

A real terminal — Ghostty’s libghostty rendering inside OmniWM, not a wrapper around another app. One key drops it over any screen with tabs, splits, and an optional glass background — and it sticks: workspaces switch and layouts re-tile beneath it while it stays exactly where you left it.

Learn more →
⌥+`Toggle⌘+DSplit pane⌥+2Switch workspace

A real Ghostty terminal that floats above every workspace — the desktop changes beneath, it doesn’t move.

Two fingers, three, four

Trackpad gestures

Swipe with 2, 3, or 4 fingers to drive the Niri strip — Snap to Columns lands you on the nearest column, or switch to Momentum for free inertial glides with rubber-band edges. Opt in to workspace swipe and another gesture flips workspaces on the monitor under your cursor, one switch per swipe.

Learn more →
2-finger swipeSnap style (example)2-finger flickMomentum style (example)3-finger swipeWorkspace swipe (opt-in)

Configured examples: two-finger scrolling in Snap or Momentum style, plus opt-in three-finger workspace switching. Choose finger counts and scroll style in Settings.

A per-display island

Workspace bar

A floating island on each display that fits the MacBook notch perfectly — the active workspace docks beside the notch while the rest line up across it. Emoji-friendly chips, live app icons with focus glow, hidden-app badges, scratchpad pills, and per-monitor everything.

Learn more →
⌥+1Workspace 1⌥+2Workspace 2⌥+3Workspace 3

Split around the notch, pixel-perfect — the active workspace always docks on its left.

A sticky widget layer

Scratchpads

A floating layer above your tiles for the tools you keep reaching for — calculator, notes, music. Ten slots, each holding any number of windows, toggled with one key, restored exactly where they were — and the visible slot follows you across every workspace.

Learn more →
Assigned hotkeyToggle scratchpad⌥+2Switch workspace

A sticky floating layer above your tiles — toggled with your assigned shortcut, following you across workspaces.

Ice-style, built in

Hidden Bar

Tick the apps whose menu-bar icons you never need — they vanish and the bar goes quiet. Right-click the OmniWM icon and a floating panel drops below the workspace bar with live captures of the real items; click one to use its actual menu, and everything re-hides itself seconds later.

Learn more →
right-clickReveal hidden iconsEscDismiss

Tick the apps to hide — the bar goes quiet, and a right-click brings the icons down to you.

CPU · GPU · memory · disk

System stats

A gauge on the workspace bar opens a live readout — CPU, GPU, memory, and disk each with its own meter, plus uptime, chip, and display info in one glass popup. Drive it from the bar, a hotkey, or omniwmctl on the command line — all three toggle the same popup.

Learn more →
clickStats button⏎From the CLI

CPU, memory, GPU, disk, and uptime — one gauge on the island, one popup below it, hotkey- and CLI-driven.

Across displays

Move edge

Enable Move Window Across Monitor at Edge and your monitors become one big canvas. At the edge of a layout, the same Move keystroke carries the window onto the adjacent routed display — layouts on both sides adapt, and focus travels with it.

Learn more →
⌥+⇧+→↓←↑Move window

With Move Window Across Monitor at Edge enabled, Move carries the window to the adjacent display and each layout makes room.

Script every move

The bundled omniwmctl speaks NDJSON over a local socket — query state, drive windows and workspaces, and subscribe to live events from scripts, Raycast, or anything else.

❯ omniwmctl query windows --workspace 1
❯ omniwmctl command focus right
❯ omniwmctl command scratchpad toggle 2
❯ omniwmctl subscribe focus --format ndjson
Example focus event (abridged)
{"channel":"focus","id":"9F2C…","kind":"event","ok":true,"result":{"kind":"focused-window","payload":{"window":{"id":"ow_h3k…","pid":1234,"title":"Ghostty"}}},"status":"success","version":16}

What switchers say

Coming from yabai, AeroSpace, Rectangle, or Amethyst? So were they — real words from real users, every quote linking to its GitHub source.

I've been through Aerospaces, Yabai, Rift, and now this… I recently tried Paneru and Komorebi, and nothing compares to what OmniWM is.
@dagrlxvia GitHub ↗
Animations are buttery smooth
@yougotwillvia GitHub ↗
after just getting a taste of how snappy/responsive it was, i refuse to re-enable PaperWM
@besseddrestvia GitHub ↗
your work is absolutely fantastic. I personally adore it. […] Immediately uninstalled aerospace and started using omni.
@amoghyermalkar123via GitHub ↗
Given how early it is in the development process, this is undoubtedly the best tiling window manager for OSX.
@imrellxvia GitHub ↗
I'm using OmniWM - coming from a Niri/Noctalia setup on Linux - for a few hours now and already fell in love with it. 😍
@jemayervia GitHub ↗
OmniWM is already becoming my favorite WM and is now my daily driver. I can see this becoming the go-to window manager for Mac users…
@jsonMartinvia GitHub ↗
I have now switched to omniwm on multiple monitors full time and I love it.
@sgrimeevia GitHub ↗
I've been using OmniWM for a couple of weeks now and I love it! I am an absolute sucker for Niri on Linux and have been craving that experience elsewhere.
@connorchanjazzmanvia GitHub ↗

And a whole control panel more

One-click toggles live in the menu bar — each with a live animated preview explaining what it does.

Borders Colored outline around the focused window
Workspace Bar Per-display clickable workspace island
Keep Awake Blocks idle display sleep
Focus Mouse Focus follows mouse, no click needed
Focus Edge Focus crosses to the adjacent display at a layout edge
Mouse to Focused Pointer warps to the window after keyboard focus
Follow Monitor Follow windows you move to another workspace
Move Edge Move crosses to the adjacent display at a layout edge
Mouse Warp Pointer crosses displays via your routing map
Hide Menu Icons macOS 27Conceal menu-bar icons, Ice-style

Performance & trust

Built for people who came from Linux tiling and refuse to compromise.

Mac-native control

Accessibility, AppKit, and selected Apple private APIs work together as one purpose-built system.

Refresh-rate-aware

Animations pace themselves to your display — 60, 120, or 144 Hz.

SIP stays on

Official OmniWM releases do not require disabling System Integrity Protection.

Signed & notarized

Current official releases are Developer ID signed and Apple-notarized.

Free and open source

No subscriptions, paywalls, trials, or usage caps. Licensed GPL-2.0-only.

Install

macOS 26+ (Tahoe) on Apple Silicon.

Homebrew

brew install --cask omniwm

Official cask; the project tap is retired. Quit OmniWM, then upgrade with brew upgrade omniwm.

Upgrade and tap migration notes →

Nix

nix profile install nixpkgs#omniwm

Packaged in nixpkgs, with an official Home Manager module for launchd and declarative settings.

Home Manager setup and channel notes →

Direct download

Grab OmniWM-v0.7.3.zip from GitHub Releases, unzip, and drop OmniWM.app into /Applications.

Download the latest release ↗

First launch checklist: turn Displays have separate Spaces ON (then log out and back in), and grant Accessibility + Input Monitoring. Screen Recording is optional — it powers Overview thumbnails. Full steps in the installation guide.