An open source alternative to Divvy for macOS. Press a shortcut, a grid appears, drag across the cells you want, and the window snaps there. Save a region as a preset and it becomes a one-keystroke snap.
- Grid overlay with live preview: the window follows your drag and jumps back if you cancel
- Presets with their own global shortcuts; a Full screen preset on ⌃⌥F comes built in
- Undo the last snap
- Configurable grid size and gap between windows
- Snap the focused window or the one under the cursor
- Works across multiple displays
- Menu bar app, launch at login, no Dock icon
- No network access, no analytics, no accounts
- macOS 14 or later. Tested on macOS 26; on older versions the grid gets a frosted panel instead of the glass material.
- Apple Silicon or Intel.
- To build: Xcode Command Line Tools with the macOS 26 SDK. No Xcode project,
swiftccompiles the files directly.
With Homebrew:
brew install --cask konieczkow/tap/gridsnapOr download GridSnap-x.y.z.zip from the latest release, unzip it and drag GridSnap to Applications.
On first launch GridSnap asks for Accessibility, which it needs to move other apps' windows. Turn it on under System Settings › Privacy & Security › Accessibility (the menu bar icon has a Grant Accessibility… item that opens that pane). GridSnap picks the grant up on its own, no relaunch needed.
Or build it yourself:
git clone https://github.com/konieczkow/gridsnap.git
cd gridsnap
./build.sh install
open /Applications/GridSnap.app| Action | How |
|---|---|
| Show the grid | ⌃⌥D (change it in Settings) |
| Snap | Click or drag cells, release |
| Cancel | Esc, or drag outside the panel and release |
| Dismiss | Click anywhere outside the grid |
| Save a preset | Hold Shift when releasing, or use + in Settings |
| Apply a preset | Its shortcut, or the Presets menu |
| Undo last snap | ⌃⌥Z by default, press again to redo |
The grid appears on the display under the cursor and the window snaps to that display, so moving the mouse to another monitor before pressing the shortcut moves the window there. Presets snap to the display the window is already on.
Wider gutters in the grid mark halves, thirds and quarters.
Settings (menu bar icon › Settings…) holds both shortcuts, columns and rows, the gap in points between snapped windows, the target rule, and the presets table. Names and shortcuts are editable in place; − removes the selected preset.
./build.sh # builds build/GridSnap.app
./build.sh install # also copies it to /ApplicationsResources/icon.png is the icon source; regenerate AppIcon.icns from it with iconutil if you change it.
Files in Sources/: main.swift startup, AX.swift window plumbing, Grid.swift overlay, Presets.swift, Hotkeys.swift, ShortcutButton.swift recorder, SettingsWindow.swift, Menu.swift, Defaults.swift stored settings.
macOS ties the Accessibility grant to the app's code signature. The default ad-hoc signature changes with every build, so you'd re-grant permission after each rebuild. To avoid that, create a self-signed certificate once (Keychain Access › Certificate Assistant › Create a Certificate, type "Code Signing", name it GridSnap Dev) and the build script picks it up. Any other identity works via CODESIGN_IDENTITY="name" ./build.sh.
- Full-screen windows ignore snapping.
- Some apps enforce a minimum window size and won't shrink to a small cell. The window then stays on screen and overlaps the neighbouring cells.
MIT, see LICENSE.
