Windows-style window snapping for Mac.
Made by Joy Ahmed at ZettaByte
A small, free menu-bar app, written in Swift, that moves windows the way your hands already expect if you came from Windows. Every key is Ctrl + Alt plus one more key. On a Windows keyboard that is exactly what is printed on the keys, so Panes shows them that way too: Ctrl+Alt+←, not Mac symbols.
Or drag a window by its title bar to a screen edge, like on Windows: left or right edge for a half, a corner for a quarter, the top edge to fill the screen. A preview shows where it will land before you let go.
Joy used Windows for years. Win + ← to snap a window, Win + D to see the desktop, and he never thought about it. Then he moved to a Mac with a Windows keyboard, and window management became the thing he fought with every day.
So he built Panes: a menu-bar app that moves windows the way those hands already expect. It is free, and the free edition stays free. A Pro edition with automatic stacking and saved layouts is in the works and is not out yet.
Ctrl+Alt with the arrow keys: left or right half, top or bottom half.
Ctrl+Alt with U, I, J and K sends a window to the top-left, top-right, bottom-left or bottom-right corner.
Ctrl+Alt with 1, 2 or 3 puts a window in the left, middle or right third of the screen.
Ctrl+Alt+Return fills the screen; Ctrl+Alt+C centres the window.
Ctrl+Alt+D works like Win + D. Press it again and exactly the apps it hid come back.
Ctrl+Alt+N sends the window to the next screen.
Drag a window by its title bar to a screen edge, as on Windows. A preview shows where it will land before you let go.
Every key can change. An ignore list keeps apps you never want moved out of it, and gaps between windows run from 0 to 24 points. Open Panes again from Spotlight while it is running and Settings comes up.
Every one of these is recorded in the repository itself. They are here because a choice explained is worth more than a feature listed.
Some windows refuse to resize, like a settings window. Panes still puts them in the corner you asked for, and Up only moves them up. It does not slide them to the middle.
In Settings → Keys, click a key and press a new combination. Panes refuses a combination that is already taken and tells you which action has it.
Where a window goes for each action lives in its own module, PanesCore, with no AppKit in it, so it is tested without moving a single window. The app target only does the moving.
The self-test opens its own test windows and moves them through every snap, including a window that cannot resize. Your real windows are never involved.
Each ad-hoc build looks like a new app to macOS and loses the Accessibility permission, so the build script refuses to sign that way. A real Apple Development certificate keeps the same identity every build, and the permission survives a rebuild.
The public repository is the free edition. Its package file builds the Pro edition only when the Pro folders are present, and the public copy has none.
Every key is Ctrl + Alt plus one more key.
macOS 14 or newer and Xcode. The build signs Panes.app with your own Apple Development certificate, puts it in ~/Applications and starts it. The first time, macOS asks to let Panes control your computer: turn it on in System Settings → Privacy & Security → Accessibility.
git clone https://github.com/joyahmed/panes.git
cd panes
sh scripts/build-app.sh
# build, unit tests and the style check
sh scripts/verify.shA signed download is coming soon, so you will be able to unzip it and drag Panes to Applications. Until then, build it yourself from the steps above. If you use Rectangle, quit it first: it uses the same keys.
View the source on GitHub