Warning
parket is no longer actively maintained.
I have switched back to dwm on a Linux machine. I will no longer have a Mac available to develop or test parket.
Existing releases remain available, but bug fixes, new features, and compatibility with future macOS versions are not guaranteed.
The repository remains open for a new maintainer or a maintained fork. Responses and PR merges are not guaranteed.
A small native tiling window manager for macOS.
It tiles normal document windows with a dwm-style master-stack layout and emulates workspaces by moving inactive workspace windows offscreen. It uses Swift, public macOS APIs, and zero runtime dependencies. It does not require SIP changes.
Inspired by dwm and AeroSpace.
brew install --cask basuev/parket/parketOpen parket from Applications. On first launch, parket opens the Accessibility prompt. Grant access, then choose Recheck in the permission window or Recheck Accessibility from the menubar.
Homebrew is the normal install path. Release zips use ad-hoc signing.
- macOS 14+
- Apple Silicon
- Accessibility permission
| Key | Action |
|---|---|
Option + 1-9 |
Switch workspace |
Option + Shift + 1-9 |
Move focused window to workspace |
Option + J/K |
Focus next or previous window |
Option + Return |
Swap focused window with master |
Option + Tab |
Switch to last active workspace |
Option + M |
Toggle monocle layout |
Option + , / Option + . |
Focus previous or next monitor |
Option + Shift + , / Option + Shift + . |
Move window to previous or next monitor |
Command+Tab remains the macOS app switcher. If it selects a window on another parket workspace, parket opens that workspace and focuses the selected window.
Menubar commands: Pause Tiling, Retile Now, Pause and Restore Windows, Open Config, Copy Diagnostic Report, Reload Config.
- 9 workspaces per display.
- Master-stack and monocle layouts.
- One native tab group counts as one tileable window.
- Panels, dialogs, minimized windows, fullscreen windows, and dead AX elements stay out of workspace state.
- Recovery actions bring tracked windows back onscreen.
Edit ~/.config/parket/config.toml. All fields are optional.
workspace_count = 9
master_ratio = 0.55
modifier = "option"
[bindings]
focus_next = "j"
focus_prev = "k"
swap_master = "return"
toggle_layout = "m"
last_workspace = "tab"
[[custom]]
key = "shift+return"
command = "open -n -a Terminal"Bindings use the configured modifier key. Prefix a key with shift+ to add Shift. See config.example.toml for supported key names and defaults.
Use Reload Config from the menubar after editing.
make install
open /Applications/parket.appRun the required local gate:
make checkmake check runs formatting, policy checks, tests, and a release build. See Tests/Smoke/README.md for AX smoke checks and docs/benchmarks.md for latency runs.
brew update
brew upgrade --cask basuev/parket/parketSource install:
git pull
make installSource installs replace only Contents/MacOS/parket, so Accessibility permission survives the update.
brew uninstall --cask basuev/parket/parket
rm -rf /Applications/parket.appSource checkout:
make uninstallThe latency harness measures hotkey dispatch to the expected visible, focused fixture window.
Latest local two-display matrix, 2026-06-14:
| Scenario | parket | AeroSpace |
|---|---|---|
| Default focus p95 | 9.5 ms | 29.7 ms |
| Multi-monitor focus p95 | 15.2 ms | 38.9 ms |
| Native-tabs scenario | Passed | Failed correctness |
See docs/benchmarks.md for the full matrix, run notes, and claim wording.
Active development has stopped because the author has switched back to dwm on Linux and will no longer have a Mac available for testing.
Documentation fixes may still be reviewed. Changes to window behavior need verification by a contributor with a Mac. Passing make check alone does not replace AX smoke checks in a real macOS session.
Responses, reviews, and PR merges are not guaranteed.
If you want to maintain parket or a fork, comment on the maintainer search issue. Forks are welcome under the MIT license.
MIT
