dwell
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.