Panewright is an i3-style tiling window manager for macOS, built for developers who left Linux and left their window manager behind. Instant workspaces, modal keybindings, real multi-monitor, and a drag-to-tile interaction no other Mac tiler has — one config file, one menu bar app. Quit it, and your Mac is stock again.
Pre-1.0, in the open · Apple Silicon & Intel · your i3 config imports
1234567890[JOIN]Ghostty
where it was · where it lands — the window itself never moves
The honest question
“Isn’t this just AeroSpace?”
Fair. AeroSpace is a great, free i3-like tiler — and Panewright's engine is its own build of it (patches in the open), shipped inside the app and running under Panewright's single permission grant, alongside JankyBorders and SketchyBar. Panewright is the layer that turns all of that into one app your parents could install — and adds the things a raw config can’t.
What Panewright adds
Ghost drag-to-tile — rearrange windows by dragging. No CLI tiler on macOS has this.
One config, three tools — tiling, borders, and bar from a single TOML, applied live. No shell scripts, no skhd.
A visual editor — sliders and pickers with real-time preview, for when you don’t want to hand-edit.
Self-healing — it supervises the engine and restarts what dies, including recovering a stalled tiler that would otherwise need a manual re-grant.
A real off switch — quit and your Mac is byte-for-byte stock.
Do it yourself instead
Install and configure AeroSpace, JankyBorders, and SketchyBar separately.
Write and maintain three config formats by hand.
Wire up your own bar scripts for workspaces, modes, and window pills.
Restart daemons yourself when the Accessibility API stalls.
That’s a legitimate choice — Panewright is MIT, so you can read exactly how it does all of it.
The headline act
Ghost drag-to-tile
Grab any window by its title bar and pull. The real window stays frozen — a red ghost marks the cell it came from, a blue ghost previews exactly where it will land. Release, and the tree reshapes in one motion.
Every drop means something
Drop on a window's center to swap. Drop on an edge to split its cell. Drop on a bar number to send it to that workspace. Drop on nothing to cancel.
It's the interaction Mac tiling has been missing.
12345[RESIZE]native · vibrancy
12345[RESIZE]technical · one toggle away
See it in motion
Every interaction, live
No mockups — these are screen recordings of the real app.
Edge split — drop on a window's edge to split its cell and take the half.
Drag to a workspace — drop a window on a bar number to send it there.
Summon across monitors — $mod+N pulls a workspace to the monitor you're on.
Dynamic pills — move a window to an empty workspace and its pill appears; empty ones hide.
Resize mode — $mod+R, then bare h/j/k/l resize the focused window. The bar badge shows you're in a mode.
Join mode — $mod+G nests two neighbors into a stack or row.
Scratchpad — stash a window away, summon it back floating over any workspace.
Cheat sheet — $mod+? shows every binding in your config, not a stock chart.
Muscle memory, intact
It types like i3
Ten instant workspaces, vim-keys focus, modal modes, scratchpad, per-app rules. Pick your modifier: Ctrl+Cmd (default), a Caps Lock hyper key, or a leader prefix.
⌃⌘ 1–0workspaces⌃⌘ ⇥back & forth⌃⌘ H J K Lfocus⌃⌘⇧ H J K Lmove⌃⌘ Rresize mode⌃⌘ Gjoin mode⌃⌘ −scratchpad⌃⌘ Tto-do⌃⌘ Ppark window⌃⌘ Ffullscreen
01
Workspaces that don't animate
Virtual workspaces, not macOS Spaces — switching is a frame, not a cruise.
02
One config, live
A single TOML file. Save it — or drag sliders in the editor — and the desktop follows.
03
Profiles
Snapshot named setups. Switch from the menu.
The full inventory
Everything in the box
Tiling
Binary splits with configurable inner/outer gaps
Join mode — nest any two neighbors into a stack or row
Accordion — i3's stacking/tabbed, one key away
Flatten — the layout panic button
Fullscreen & floating toggles per window
Focus borders in any color, native rounded corners
Workspaces
Ten of them, keyboard-row ordered 1–9 0
Zero-animation switching, back & forth on $mod+Tab
Empty workspaces hide until they're occupied, i3-style
Multi-monitor — a bar per display with M1/M2/M3 badges, independent switching, $mod+N summons a workspace to your monitor, auto-distribution on plug/unplug
Scratchpad — stash and summon from anywhere
Clickable bar numbers — or drag a window onto one
Input
Ghost drag-to-tile — swap, split, or banish by drop zone, across monitors (drop on another screen's empty area to send the window there)
Cheat sheet — $mod+? lists your actual bindings, not a stock chart
Modifier styles: hyper, Ctrl-Cmd, Cmd, Ctrl/Alt, or a leader prefix
Modal keybindings with a live mode badge in the bar
Focus follows mouse, off by default
Command chains — several actions per key, i3-style
In the bar
System monitor — CPU/memory chip with live graphs; click for a mini-htop perf panel
Dev widgets — network throughput, listening ports, disk, battery, Docker, kubectl/AWS context (all opt-in, no sudo, no SIP)
To-do list — tasks as pills, each with notes, in plain text
Window pills — park a window in the bar, click to peek, drag it there to park
Mode badge so modal keys are never invisible
Native vibrancy or square monospace, one toggle apart
Tokens live in your Keychain, never in a config file
Rules
Always-float list by bundle ID (pickers, utilities)
Assign — apps that always open on their workspace
Sane defaults for macOS's quirky windows, out of the box
Config & tooling
One TOML file, applied live on save
Visual editor — sliders and pickers with real-time preview
Profiles — named setups, switchable from the menu
i3 importer with a line-numbered honesty report
Event hooks — run any script on workspace or focus change (yes, Python)
exec bindings launch anything
Care & feeding
Setup checklist installs the stack — no terminal needed
Auto-updates — a daily check, signed and delivered by Sparkle
Crash reports as GitHub issues — consent-first
Errors surface as notifications, never silence
Quit restores stock macOS — every window comes back
Make it yours
A bar you actually configure
Seventeen widgets, on from the first launch — and each one is a single toggle or right-click to remove if you'd rather a purer bar. Pick them from a window, drag to reorder. No sudo, no SIP, and never a config file unless you want one.
System
CPU & memory with live sparklines — click for a mini-htop panel of load, uptime, and top processes
Network throughput, disk usage
Battery with the time remaining the menu bar hides
Developer
Listening ports — click for what owns each one
Docker containers, Homebrew updates, VPN status
Cloud context — kubectl and AWS profile, flagged red when it looks like production
Everything else
Microphone — click to mute, the widget every meeting needs
Volume, now playing, keyboard layout, Focus, weather
Work trackers — GitHub, GitLab, Jira, Confluence, and Teams pills, in the same picker
Hover a widget for three seconds and it names itself. One batched driver refreshes them all — one process per cycle, not one per widget.
How it stacks up
Against the other Mac tilers
AeroSpace, yabai, and Amethyst are all good tools — Panewright even runs on AeroSpace. Here's where it's genuinely different.
Panewright
AeroSpace
yabai
Amethyst
No SIP disable
✓
✓
partial
✓
Drag-to-tile (ghost)
✓
—
—
—
Instant workspaces (no animation)
✓
✓
native Spaces
native Spaces
One config file
✓ TOML
✓ TOML
script + skhd
GUI
Visual editor
✓
—
—
prefs pane
Status bar included
✓
bring your own
bring your own
—
Focus borders
✓
add-on
add-on
—
Import your i3 config
✓
—
—
—
Self-heals a stalled engine
✓
—
—
—
One-click setup (installs the stack)
✓
manual
manual
✓
Open source
✓ core
✓
✓
✓
Comparison as of 2026, best-effort and honest — corrections welcome on GitHub.
What Panewright won't do — on purpose
yabai's flashiest tricks — per-window transparency, shadow removal, sticky all-space windows, pixel-grid placement — all require partially disabling System Integrity Protection. That's the security model Apple ships to protect you, and turning it off is exactly what Panewright refuses to do.
So we don't have those, and we never will. That's not a gap we're behind on — it's the line that lets you run Panewright without weakening your Mac. If a feature needs SIP off, it's not coming here.
Needs SIP disabled — not here
✗ Window opacity / transparency
✗ Custom window shadows
✗ Sticky (all-spaces) windows
✗ Pixel-grid window placement
Kept intact: your Mac's security, untouched.
Switching from Linux?
Your i3 config works here
Point the importer at your real ~/.config/i3/config. It translates what maps and tells you the truth about what doesn't — with line numbers, not silence.
panewright import ~/.config/i3/config
Imported 23 bindings and 2 modesSaved as profile 'i3-imported'9 items need attention: line 5: terminal launcher → Terminal.app
line 17: i3's stacking layout → accordion
line 27: 'reload' isn't needed — config
applies automatically
line 40: i3bar → the [bar] section
…
Honest translation
Bindings, modes, gaps, scratchpad, colors — all come across. X11-isms get flagged, never dropped silently.
The result lands as a profile you inspect before activating.
Straight answers
Honest engineering
Does it disable SIP?
Never. Panewright's engine (its own build of AeroSpace, shipped inside the app) and the tools it orchestrates — JankyBorders, SketchyBar — all use public APIs. One brain, one config, one permission grant.
Why does it want Accessibility and Input Monitoring?
Accessibility moves windows; Input Monitoring lets the drag layer see a title-bar drag begin. It's all local — nothing is logged, stored, or sent anywhere, and the source is public so you can confirm it. No network calls except the update check and any integrations you turn on.
Won't it get flaky like other tilers?
macOS's Accessibility API can stall under load — the honest weakness of every Mac tiler. Panewright supervises its engine: a dead or stalled tiler is respawned, your window-to-workspace layout is snapshotted and restored across the restart, and the bar heals itself — instead of anything silently going dead until you notice.
Why isn't it on the App Store?
The sandbox forbids the Accessibility API that window management requires. Every serious tiler ships direct.
What happens when I quit?
Everything comes back — borders off, bar gone, every hidden window returned. macOS exactly as Apple shipped it.
What will it cost?
The core is open source (MIT) and stays that way — build it yourself for free, forever. A paid app is planned for the convenience layer: a signed, notarized, auto-updating build and the work-tracker integrations. Fund the roads, sell the car.
Not 1.0 yet
Built in the open
Panewright is under active development. The code, every release, and the roadmap live on GitHub — star or watch it there, and the 1.0 announcement will land on r/unixporn.