KiwiDesk
A tiling window manager for macOS, configured in Lua
Features
- Seven Tiling Layouts
- Configured In Lua
- GUI, CLI, And Lua Scripting
- Vim-Style Hotkey Layers
- Per-Space Window Hiding
- Sticky Windows Across Spaces
- Unix Socket IPC Events
- 60/120Hz Spring Animations
- Signed And Notarized
Install
$brew install --cask kiwicanopy/tap/kiwideskAbout
KiwiDesk is a tiling window manager for macOS, written in Swift and configured in Lua, that arranges windows as flat arrays instead of classic i3-style split trees across seven layouts — bsp, stack, scrolling, monocle, grid, track, and floating. It never requires disabling System Integrity Protection, exposes GUI, CLI, and Lua scripting interfaces, and supports per-space window hiding, sticky windows, and Unix-socket IPC event streams. The project is MIT-licensed, free and open source, and ships signed and notarized.
Who It's For
KiwiDesk is for macOS users who want i3-style automatic tiling without the split-container mental model — developers who like the idea of a tree-based tiler like yabai but find split trees hard to predict and hard to script. It also suits users who want to script their window manager in Lua rather than shell out to a CLI, and anyone who wants tiling that never touches System Integrity Protection.
How It Works
Instead of organizing windows in split-container trees the way classic tiling window managers do, KiwiDesk keeps each space as a flat, one-dimensional list of windows. The project's own framing is direct: "Classic tiling window managers organize windows in split-container trees — powerful, but hard to predict and hard to script." KiwiDesk maintains seven interchangeable layouts on top of that flat model — bsp, stack, scrolling, monocle, grid, track, and floating — so the layout algorithm changes without the underlying window list changing shape. Configuration and scripting run through an embedded, sandboxed Lua 5.5 VM, alongside a GUI and CLI, and the app exposes a Unix socket that streams JSON events for IPC — useful for status bars or external tooling that want to react to window and space changes. Interaction includes vim-style modal hotkey layers for keyboard-driven control, and the tool layers per-space window hiding and sticky windows (which persist across spaces) on top of native macOS Desktops rather than replacing them with its own virtual workspace system.
Compared to Alternatives
Compared to yabai, KiwiDesk's flat-array model is explicitly a reaction against yabai's split-tree layout, aiming to be easier to predict and script, and it never requires disabling SIP — yabai's full feature set requires a partial SIP disable. Compared to AeroSpace, both tools avoid touching SIP, but they differ in workspace architecture: AeroSpace implements its own virtual workspace system entirely apart from native Spaces, while KiwiDesk's per-space features are built on top of macOS's native Desktops. Users who want yabai-like BSP tiling with Lua scripting and no SIP changes are the clearest fit for KiwiDesk; users who want zero dependency on native Spaces should stick with AeroSpace.
Requirements
- macOS 14 or later, Apple Silicon
- Accessibility permission only — SIP never needs to be disabled
- Signed and notarized, so Gatekeeper allows it to run without extra steps
- Actively maintained: version 1.1.0 shipped shortly after a run of point releases through July and August 2026
Getting Started
Install via Homebrew:
brew install --cask kiwicanopy/tap/kiwidesk
The cask installs the app and puts the kiwidesk CLI on your PATH. Alternatively, download the signed .dmg directly from kiwidesk.kiwicanopy.com and drag KiwiDesk into Applications — with this method you'll need to link the CLI onto your PATH manually. Launch KiwiDesk and grant Accessibility permission when prompted; tiling starts immediately with no configuration required. From there, write Lua to customize layouts, hotkey layers, and profiles, or drive KiwiDesk from its CLI and Unix-socket JSON event stream for scripting. Full documentation, the CLI reference, and configuration recipes are linked from github.com/KiwiCanopy/KiwiDesk.