Installation
Requirements
Section titled “Requirements”- macOS 26+ (Tahoe) on Apple Silicon
- Accessibility and Input Monitoring permissions (required at launch)
- Screen Recording permission for Overview thumbnails, rendered wallpaper previews, drag previews, and captured Hidden Bar glyphs (optional)
- Full Disk Access permission for Hidden Bar concealment (optional)
Displays have separate SpacesON (the macOS default; OmniWM pauses window management until it is enabled)
Homebrew
Section titled “Homebrew”OmniWM is in the official Homebrew cask repository:
brew install --cask omniwmThis installs OmniWM.app and puts omniwmctl on your PATH. Then finish with the first-launch setup below.
Upgrading
Section titled “Upgrading”Quit OmniWM first, then run brew upgrade omniwm and relaunch it. Homebrew replaces the app bundle underneath a running OmniWM.
Migrating from the project tap
Section titled “Migrating from the project tap”BarutSRB/tap is retired: 0.6.7 was its final release, and every later version ships only through the official cask. If you installed from the tap, quit OmniWM and run these commands in this order:
brew updatebrew upgrade omniwmbrew untap BarutSRB/tapbrew update has to come first: it fetches the retired tap’s redirect to the official cask and moves your install over. Untapping before that would offer to uninstall OmniWM. brew reinstall --cask homebrew/cask/omniwm is optional and only switches the install record to the official cask right away.
OmniWM is packaged in nixpkgs, maintained by mmfallacy and samiser, and Home Manager ships an official programs.omniwm module, maintained by DavSanchez. The package installs the signed release artifact with bsdtar, so the Developer ID signature stays valid, and exposes OmniWM and omniwmctl on PATH. Both currently live on unstable branches only (the nixpkgs unstable channels and Home Manager master) and may trail the latest GitHub release.
Install the package directly:
nix profile install nixpkgs#omniwmWith nix-darwin or Home Manager, add pkgs.omniwm to environment.systemPackages or home.packages.
For a declarative setup, enable the Home Manager module. It installs the package, runs OmniWM as a launchd agent, and writes ~/.config/omniwm/settings.toml from an attribute set or a tracked TOML file:
programs.omniwm = { enable = true; settings = ./omniwm-settings.toml;};Treat the declared TOML file or attribute set as authoritative: edit it and run Home Manager switch to apply changes. OmniWM preserves settings symlinks, so settings backed by a read-only Nix-store file cannot be saved from the GUI.
Home Manager enables a launchd agent with KeepAlive by default. To launch and quit OmniWM manually instead, set programs.omniwm.launchd.enable = false.
After either installation, finish with the first-launch setup below.
GitHub Releases
Section titled “GitHub Releases”- Download the
OmniWM-v<version>.zipapp archive from the latest release. - Extract and move
OmniWM.appto/Applications. - Continue with the first-launch setup.
First-launch setup
Section titled “First-launch setup”- In System Settings > Desktop & Dock > Mission Control, turn ON
Displays have separate Spaces. - Log out of macOS and log back in for that change to take effect, unless you had it on already.
- Launch OmniWM and grant Accessibility and Input Monitoring when prompted. Both are required at launch.
- Optionally grant Screen Recording for capture-derived visuals: Overview thumbnails, rendered wallpaper previews, drag previews, and captured Hidden Bar glyphs.
- Return to OmniWM’s permissions window and click Start OmniWM or Continue Without Screen Recording. If a required permission still appears missing, click Check Again.
Canary builds
Section titled “Canary builds”Stable releases are recommended for everyday use. Canary builds let you try recent changes and help test fixes before the next release. They are built daily when main has new changes and are signed and notarized, but may contain regressions.
To try one with a Homebrew or GitHub Releases install:
- Save a copy of
~/.config/omniwm/settings.toml. - Quit OmniWM, then download the newest canary build and replace
OmniWM.appin/Applicationswith the app from its ZIP. - Relaunch OmniWM. It uses your existing settings.
OmniWM’s update check only tracks stable releases, so download newer canaries the same way. To return to stable, quit OmniWM. For a Homebrew install, run brew reinstall --cask omniwm; for a direct download, replace the app with the latest release. If stable cannot read settings saved by a canary, quit OmniWM and restore your copy. When reporting a canary bug, include its release link.
Updates
Section titled “Updates”OmniWM checks for updates by default:
- On launch, OmniWM polls the latest GitHub release at most once per day.
- Updates stay manual. OmniWM does not auto-download or auto-install a new release.
- When a newer release is available, OmniWM shows a centered popup with release notes and actions for
Open Release Page,Copy brew upgrade omniwm,Skip This Version, andNot Now. - You can control this from Settings > General > Updates or trigger a manual check from the status bar menu with
Check for Updates....