OmniWM Guide
/

Unofficial guide

OmniWM, end to end

A macOS tiling window manager inspired by Niri and Hyprland. Everything below is sourced from the OmniWM repo and omniwm.app — nothing invented.

Verified v0.6.4 Checked 2026-09-01 Requires macOS 26+, Apple Silicon Notarized, GPL-2.0

Two layout engines

Every workspace runs one of these. You can toggle between them per workspace (OptionShiftL).

Niri niri

Orientation-aware scrolling containers. On a horizontal monitor, windows form vertical columns you scroll left/right through. On a vertical monitor, they form horizontal rows scrolling up/down. A column can hold multiple windows, or go "tabbed" — one visible at a time.

Think: an infinite horizontal filmstrip of columns, not a fixed grid.

Dwindle dwindle

Binary space partition, Hyprland-style. Each new window recursively splits the available space in half. Tiles can group multiple windows as tabs. Best for traditional, predictable tiling — no scrolling.

Think: every new window cuts the screen in two, like a fractal.

Workspaces, monitors, and the space between

Three separate concepts that are easy to conflate when you're new to tiling WMs.

WorkspaceA named group of windows. Switch with Option+1‑9. Has a Home Monitor but can move to another.
MonitorA physical display. Layout orientation (Niri columns vs rows) is set per monitor, not globally.
Scratchpad10 slots of floating windows that overlay whatever workspace you're on. Not tied to one workspace.

Moving a window to a monitor, moving a workspace to a monitor, and letting a window cross a monitor edge by dragging are three different actions with three different shortcuts — see Reference, category "Monitor Control".

Quick reference

All 87 actions OmniWM ships, filterable by layout engine. Type to search — matches action names, categories, shortcuts and CLI commands, including plain-language terms like "resize", "screen" or "snap". Unassigned actions show their omniwmctl equivalent instead of a blank.

Common tasks, answered directly

Features

The parts of OmniWM that aren't just a keybinding.

Configuration

Lives at ${XDG_CONFIG_HOME:-$HOME/.config}/omniwm/settings.toml, TOML, live-reload, required top-level schemaVersion = 1. Strictly validated — a missing key or malformed hotkey array rejects the whole file. State (clipboard history, update checks, window catalog) lives separately at ${XDG_STATE_HOME:-$HOME/.local/state}/omniwm.