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 the beta Read the source

Public beta, version 0.2.0 · macOS 13 or later · Apple silicon and Intel

Click the desktop and drive it

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

  • bindsymkeys and modes
  • for_windowrules by app
  • assignapps to workspaces
  • gapsinner, outer, smart
  • scratchpadhide and summon
  • back_and_forthlast workspace
  • check-config flags 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 ter finds Terminal
  • Minimized and full-screen windows show up too
  • hints swap trades 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
$ 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.
Read the CLI docs

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 and in public beta. 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. It's a beta, so expect rough edges and report what breaks.