The keyboard‑first tiling window manager for macOS
Windows tile the moment they open, workspaces switch without the Spaces animation, and the i3 config you already have mostly just works. No SIP changes, nothing injected into the Dock.
Download for macOS Read the sourceBring your i3 config
Panespace reads i3's syntax, so your bindings, modes and rules come along. It writes a commented default on first run if you're starting fresh.
- bindsym
keys and modes - for_window
rules by app - assign
apps to workspaces - gaps
inner, outer, smart - scratchpad
hide and summon - back_and_forth
last workspace
check-configflags any line it can't use- Bindings follow your keyboard layout
- Reload with $mod⇧C
Any window, two keystrokes away
The switcher searches every window by app, title or workspace. Window hints put a letter on everything you can see; type it and you're there.
- Fuzzy search, so
terfinds Terminal - Minimized and full-screen windows show up too
hints swaptrades places with the window you pick- Works across every display
Workspaces without the wait
Panespace keeps its own workspaces instead of macOS Spaces, so switching moves each window once and there's no animation to sit through. Swipe with four fingers and they follow your fingers, then snap.
- Move windows and whole workspaces between displays
- Workspaces go back to their display when it's plugged in
- Eight menu bar indicator styles
- Immersive mode hides the menu bar with one key
Script it like i3
panespace msg works like i3-msg, so your scripts, status bars and launchers can drive it.
$ panespace msg workspace 3
[{"success": true}]
$ panespace msg '[app="Safari"] focus'
[{"success": true}]
$ panespace msg -t get_workspaces | jq -r '.[].name'
1
2
3
$ panespace check-config
~/.config/panespace/config: 68 bindings in 2 mode(s), 3 rules
$
Under the hood
- Accessibility API only. No SIP changes, no scripting additions.
- One background queue per app. A frozen app can't hold up your keys.
- Damped-spring animation, in step with the display, with no overshoot.
- Tested core. The layout tree and config parser are a plain Swift module with unit tests.
The keys you already know
$mod is ⌃⌥ out of the box. Switch it to Caps Lock, ⌥, ⌘ or Hyper from the menu bar.
- Focus left, down, up, right
- $modHJKL
- Move the window
- $mod⇧HJKL
- Switch workspace
- $mod1to0
- Send the window to a workspace
- $mod⇧1to0
- Split horizontally or vertically
- $modB/V
- Tabbed, stacking, toggle split
- $modW/S/E
- Full screen
- $modF
- Float or tile the window
- $mod⇧Space
- Window hints
- $mod;
- Search all windows
- $mod/
- Resize mode
- $modR
- Close the window
- $mod⇧Q
Stop dragging windows around
Panespace is free. Install it, keep your i3 habits, and let every window find its place.
First launch: right-click the app and choose Open, then allow Accessibility when macOS asks.