KiwiDeskKiwiDesk
For everyone with a Mac

Your windows, tidy — all on their own

KiwiDesk arranges your open windows into a neat layout, automatically. No more dragging corners or hunting for that one hidden window. Just a calm, tidy screen. Simple to start — with room to grow when you are.

🥝 Public beta — available now
The tiling window manager for macOS that just works

Tiling that thinks in flat arrays

KiwiDesk manages windows in flat arrays, not i3-style trees — fully Lua-configurable, with seven layouts to switch between. And it never disables SIP.

🥝 Public beta — available now

“Tiling managers were always a nerd's toy. I wanted to make them intuitive for everyone – it should just work, like that.”

“A window manager that works with you — not one you have to tell how to work.”

New here? Start here

What is KiwiDesk, really?

You know the mess: a dozen windows overlapping, half of them hidden, and you spend your day nudging them around. KiwiDesk does that nudging for you. Open a window and it slots neatly into place beside the others — tidy, edge to edge, no gaps you didn’t ask for.

Learn the basics
Meet the kiwi

Watch your windows tidy themselves

Ten playful seconds with our mascot, happily arranging a screenful of windows into place — the KiwiDesk way, just with a little extra charm.

Click to play — 10 seconds 🥝

“Fair warning: it's about as oddly satisfying as watching kiwis stack kiwis. You'll open windows on purpose, just to watch them snap into place.”

How it works

Three steps to a calmer screen

No setup rituals, no manuals. It just starts helping.

  1. Open your windows

    Work like you always do — open apps, browse, write. Nothing new to learn.

  2. They arrange themselves

    Each window slides into a tidy spot automatically. Every window visible, nothing buried.

  3. Stay in the flow

    A tap of a key nudges the layout when you want. Otherwise, it just stays neat while you focus.

Why it feels better

A calmer way to work

Without KiwiDesk

Windows pile up and overlap. You drag, resize, and hunt for the one you need — again and again.

With KiwiDesk

Everything has a place. Your screen stays tidy on its own, so your attention stays on your work.

  • Windows fall into place automatically
  • Nothing hides behind other windows
  • Feels native — built for macOS, top to bottom
  • Works out of the box — configurable if you want

“I built KiwiDesk because I wanted to show my friends how good it feels to never tidy your windows again — calm, effortless, and honestly kind of fun.”

— Maikel, planting kiwis for a calmer, happier desktop experience
Why KiwiDesk

Built around one idea, done well

A flat, one-dimensional window model — and everything fast, scriptable, and safe that falls out of it.

Flat arrays, not trees

Every space is a flat window list. Layouts are pure functions over that array — no tree surgery, ever.

Seven layouts

bsp, stack, scrolling (PaperWM), monocle, grid, track, and floating. Switch between them instantly.

Lua configuration

A sandboxed Lua 5.5 VM reads ~/.config/KiwiDesk/init.lua. A broken config can’t freeze your windows — a 500 ms watchdog guards it.

CLI + socket IPC

Script everything. Stream events to SketchyBar, JankyBorders, or your own tools over a socket.

Smooth animations

One display link per monitor, so mixed 60 / 120 Hz setups each animate at their own native cadence.

No SIP disabling

User-space only. Modal keybindings run through Carbon — no Input Monitoring permission, no keylogger.

“Even though I'm perfectly comfortable in the terminal, I got tired of having to constantly track container nesting just to arrange my windows the way I want. KiwiDesk keeps everything flat. No unnecessary overhead, no distractions: just pure focus on my projects.”

The seven layouts

One key away, each time

Every layout is a pure function over the same flat array — so switching is instant and predictable.

BSP

Binary space partitioning, square-ish splits.

Stack

A master zone beside a stack column.

Scrolling

Niri / PaperWM horizontal columns.

Monocle

Focused window maximized, rest behind.

Grid

Dynamic or rigid rows × columns.

Track

Columns or rows; every resize has one true target.

Floating

The macOS default, left untouched.

Configuration

Script it in Lua

Prefer text to sliders? Drop real Lua into ~/.config/KiwiDesk/init.lua and it takes over — layouts, gaps, keybindings, all as code, running in a sandboxed Lua 5.5 VM behind a 500 ms watchdog so a typo can never freeze your windows.

init.lua
-- ~/.config/KiwiDesk/init.lua
KiwiDesk.set_gap_global(10)
KiwiDesk.set_mode("music", "floating")

-- one flat array per space, tidy by default
KiwiDesk.bind("cmd+alt+left", function()
    KiwiDesk.focus("left")
end)
Command line

Drive it from the terminal

Every action is a command. Bind them to keys, script them, or stream live events over a Unix socket into SketchyBar, JankyBorders, or your own tools.

“The day my window manager became scriptable, my desktop started running itself. I haven't dragged a window since.”

zsh — kiwidesk
$ kiwidesk set_mode monocle
$ kiwidesk focus left
$ kiwidesk get_state
# stream live events (feed SketchyBar, your own tools…)
$ kiwidesk subscribe space_change
Quick start

Install KiwiDesk

KiwiDesk is in public beta. Install it with Homebrew — one command, and the kiwidesk CLI comes with it. Homebrew also keeps it current with brew upgrade. A signed, notarized download follows once the app can update itself, so a direct download is never a dead end.

Read the Docs

Requires macOS 14 or later.

zsh — install
$ brew install --cask kiwicanopy/tap/kiwidesk
# the kiwidesk CLI lands on your PATH too
Or build it from source
zsh — build
$ git clone https://github.com/KiwiCanopy/KiwiDesk.git
$ cd KiwiDesk
$ swift build -c release
# for contributors — Homebrew is the easy path
Ready when you are

Give your screen a little peace

KiwiDesk is out in public beta — you can install it today with Homebrew, which keeps it current with brew upgrade. A signed direct download follows once the app can update itself.

“They say an apple a day — but the kiwi's got more vitamins and bigger plans... 🥝”

Made for macOS 14 and later.