Plonk
Free and open source · macOS 13+ · no account, no cloud, no telemetry

Your desk, put back together.

A menu bar window manager for the Mac: snap zones you draw yourself, hotkeys for all of them, and workspaces that reopen your apps on the right monitor. Drag a window there, press a key — or describe the whole desk and let your agent build it.

$ brew install --cask ostapondo/plonk/plonk
Download .zip

Signed, built and attested on GitHub's runners — check the binary against the commit before you open it.

An eight-zone grid is cut out of one screen with seven clicks in the zone editor, then filled: one window dragged in, one sent by shortcut, and the remaining six placed at once from a sentence typed to an agent
Seven clicks make the grid. Then one window is dragged in, one is sent with ⌃⌥3, and the other six land on a sentence.

Three ways to put a window somewhere

Halves and quarters your Mac already does. The point of Plonk is the layout that isn't halves and quarters — and getting eight windows into it without eight drags.

Drag it

Zones light up as you move a window, and it drops into one. Hold and it takes two of them at once. Grab-and-move lets you pull a window from anywhere inside it.

Press a key

⌃⌥← for the left half, ⌃⌥1⌃⌥9 for the numbered zones on that screen, ⌃⌥0 to put a window back exactly where it was before Plonk touched it.

Say it

Plonk speaks MCP, so any agent can place every window on every monitor in one call — and save the result as a workspace you can launch from nothing.

Draw the layout, once

Click a zone to split it, ⇧-click to split it the other way, drag a divider to resize its neighbours. Any number of zones, any size, a different set on every monitor — and windows come back to their zone when a display is unplugged and plugged in again.

A screen divided into three zones, with a window being dragged into the highlighted top-right zone

Five sets ship with it. Everything past that you draw yourself — or describe, and let the agent build it.

Five built-in zone sets — Halves, Thirds, 60/40, Quarters, Priority — and a sixth, irregular one drawn by hand

A desk you can put away

A workspace remembers the apps, the frame of every window, the monitor each one belongs on, and what each app should open on the way up. Launch it onto an empty desktop and it rebuilds itself — opening whatever is closed, waiting for the windows, putting them back.

A saved workspace of four apps, closed to an empty desktop, then launched back into place

The part no other Mac window manager has

One line, and your agent can read the desk, rearrange it, save it, and read the screen back — without a screenshot round trip for anything that is really just words.

# Claude Code
claude mcp add plonk -- npx -y plonk-mcp

# Codex CLI
codex mcp add plonk -- npx -y plonk-mcp

Cursor, Zed, Cline and anything else that speaks MCP work the same way — several at once is fine, and Plonk shows you who is connected. All 19 tools →

  • browser left 60%, terminal top right, notes bottom right
  • save that as a workspace called “review”
  • put everything back where it was before the meeting
  • keep the Mac awake until this build finishes
  • read the error out of that dialog and tell me what it says

What you get

ZonesDraw any layout you like, per monitor. Snap by dragging, by number, or by asking. Windows come back to their zone when a display is unplugged and plugged in again.
WorkspacesA desk you can put away: the apps, every window's frame, the monitor each belongs on, and what each app opens on the way up. Launch it onto an empty desktop and it rebuilds itself.
Focus that follows
the layout
⌃⌥⇧← goes to the window that is actually on the left, not the one you used last. ⌃⌥` cycles the windows stacked in one zone.
Text off the screen⌃⌥T selects an area and copies the words in it — from a screenshot, a paused video, a dialog that will not let you select. On-device, nothing uploaded.
Pin part of the screenFloat a live crop of anything above everything else: a build log, a chart, a call, visible in a corner while you work over it.
Keep awakeReal power assertions, not a jiggler — and a session that ends by itself: after N minutes, at a wall-clock time, or the moment a process exits.
ScreenshotsRegion, window or screen, then pen, arrow, rectangle, ellipse and highlighter. Saved at native resolution.
A shortcut guideEvery shortcut the app in front actually has, read from its own menus, so it is never out of date.

Everything runs on your Mac

Moving another app's windows costs an Accessibility grant, and a screenshot costs Screen Recording. That is a lot to hand something you installed a minute ago — so none of this is a promise, it is all checkable from a terminal.

# every socket the app has open
lsof -nP -i -a -p "$(pgrep -f Plonk)"
plonk … TCP 127.0.0.1:43917 (LISTEN)

One listener on loopback. The only outbound call is the update check, which sends no identifier and can be switched off.

# a web page cannot drive it
curl -so /dev/null -w '%{http_code}\n' \
  -H 'Origin: https://example.com' \
  http://127.0.0.1:43917/state
403
# and nor can another program on your Mac
curl -so /dev/null -w '%{http_code}\n' \
  http://127.0.0.1:43917/state
401

The API is gated on a token only you can read, so a script cannot borrow Plonk's Screen Recording by asking the port. No account, no cloud, no analytics, no crash reporter. SECURITY.md →

Put it on your Mac

$ brew install --cask ostapondo/plonk/plonk
Star it on GitHub

Or help build it. It compiles and tests on a plain checkout with no signing certificate and no account — CONTRIBUTING.md is three commands long, and the good first issues each say where the code is and how to tell it worked.