Draw the zones you want, then drop windows into them with the mouse or the keyboard. Every window lands at exactly the right size.
Each display keeps a layout of its own.
Free · Open source · macOS 14 or later
This is the real behaviour, on a pretend desktop. Grab the Notes window and have a go.
Start from columns, grids or a main window with a stack beside it, or draw your own zones on a grid that keeps them aligned. Move them, resize them, keep as many layouts as you like.
The layout editor: drag across the grid to draw a zone.
Send the active window to the next zone with ⌃ ⌥ →, or straight to zone 1 to 9 with its number. Prefer another key for dragging? Pick Option, Control or Command.
Each press moves the window to the next zone, and back round to the first.
A wide monitor wants columns and a vertical one wants rows. Marmita remembers a layout for each display, and ⌃ ⌥ ⌘ → moves a window across, into the same zone.
Columns on the wide display, rows on the portrait one.
Marmita is written in Swift with the frameworks that ship with macOS. It is free, and every line is on GitHub.
No Dock icon and nothing in the way.
It never connects to the internet. Layouts are a small file on your Mac.
Just AppKit, SwiftUI and the Accessibility API.
Use it, change it, build on it.
Yes. It is free and open source under the MIT licence.
macOS only lets an app move and resize other apps' windows through the Accessibility API, so Marmita needs that permission to do its job. It uses it for nothing else, and it never connects to the internet.
Yes. Each display keeps its own layout, the zones of every screen appear while you drag, and a shortcut moves the active window to the next display.
Both use Control and Option with the arrow keys by default, so keep only one of them active for those shortcuts.
For now, Marmita is built from source. You need macOS 14 and Xcode 16, or the Command Line Tools with Swift 6.
# clone, build and open
git clone https://github.com/gustavos00/marmita.git
cd marmita
./scripts/build-app.sh
open build/Marmita.app
On first launch, macOS asks for Accessibility access. Grant it in System Settings › Privacy & Security › Accessibility.