zwm.
A tiling window manager for macOS, written in Swift.
This is personalized software. ZWM does exactly what I want from a window manager — but it probably won’t do what you want out of the box. If it looks interesting, fork it and tweak it to fit your workflow!
Grid tiling, horizontal & vertical
9 workspaces per monitor
Workspace overflow
Auto-float small windows
Window rules
Focus-follows-mouse
Multi-monitor support
CLI control

Requirements

macOS 14 (Sonoma) or later.

Accessibility permission must be granted: System Settings › Privacy & Security › Accessibility

Install

Homebrew

$ brew install zhubert/tap/zwm

Start ZWM as a background service:

$ brew services start zwm

Grant Accessibility permission when prompted, then ZWM will start tiling your windows.

To stop:

brew services stop zwm

To uninstall:

brew uninstall zwm

Build from source

git clone https://github.com/zhubert/zwm.git
cd zwm
make install

This builds a release binary, copies ZWM.app to /Applications/, and installs the zwm CLI to /usr/local/bin/.

To uninstall a source build:

make uninstall

CLI

The zwm CLI communicates with the running server over a UNIX socket. Run zwm --help for available commands.

Behavior

All behavior is hardcoded — there is no configuration file. To change settings, edit EngineConfig.swift and rebuild.

Max tiling windows

4 per workspace. Overflow goes to the next workspace.

Focus follows mouse

Enabled. Windows are focused on hover without clicking.

Gaps

0 inner, 0 outer. No spacing between windows.

Workspaces

9 workspaces (1 – 9) per monitor.

Windows from Finder, windows titled “Preferences”, and System Settings are automatically floated. Windows smaller than 1/8 of the monitor area are also auto-floated.

made by zack · mit license