gene

dwell

2026Swift · macOSwip

A dwm-style session for macOS where terminal panes and GUI windows tile as equal clients. It drives everything through the Accessibility API, so System Integrity Protection stays on: quit the session and macOS is exactly as it was.

Tiling window managers on macOS usually ask you to disable System Integrity Protection, or they treat terminal multiplexing and window management as two separate problems with two separate keybind vocabularies. dwell does neither. You type dwell in a terminal and get a session where a terminal pane and a Safari window are the same kind of client, arranged by the same rules.

how it works

Window management runs on the public Accessibility API: no injection, no scripting additions, no SIP changes, and one private symbol, to correlate an Accessibility element with its window ID. The first session asks for the Accessibility grant; terminal panes work before it is given, GUI windows tile once it is.

macOS attributes a privacy grant to an application identity, which is why dwell ships as a signed .app despite only ever being started from a terminal. A bare executable has no bundle identifier, so it can never prompt for Local Network access, and every shell a pane spawns inherits the refusal: ssh to a machine on your own LAN fails with nothing to explain why.

Configuration is one TOML file, written on first run with every key at its default and a comment saying what it does. Updates never rewrite it. dwell check names any new key you do not have.

running it

./dev.sh install
dwell

Builds from source. Needs macOS 13 or newer and the Xcode Command Line Tools.

status

Not released. The version string reads 1.0.0, but nothing is tagged and no artifact is published: it runs one machine’s daily work and gets changed most days. Tiling, tags, the terminal panes, the runner and the clipboard all work. Validated through macOS 26; on a newer major the session still runs and says so at startup rather than failing quietly.