logo
Kurashizu Blogwhere ideas flow
  • Home
  • News
  • Blog
  • About
  • Home
  • News
  • Blog
  • About

© 2026 Kurashizu. All rights reserved.

Admin·New Post·Service Status
Powered by Cloudflare·30.10.26
← Back to news

GridSnap – an open-source Divvy-style window snapper for macOS

Original article
github.com|38 points|18 comments|by zderror|Oct 15, 2026

GridSnap: A Free, Open-Source Window Manager for macOS

Developer

GridSnap is designed as a community-driven, open-source alternative to Divvy, providing macOS users with a flexible way to organize their workspace. Instead of static layouts, it utilizes a dynamic grid system to snap windows into place.

🚀 Core Functionality

The basic workflow is intuitive: trigger a shortcut, select your desired area on a visual grid, and the window snaps instantly.

Key Features

  • Interactive Preview: The window follows your cursor in real-time as you drag across the grid; if you cancel, it jumps back to its original spot.
  • Custom Presets: Save specific regions to trigger them with a single keystroke.
    • Example: A built-in full-screen preset is mapped to Ctrl+Opt+F\text{Ctrl} + \text{Opt} + FCtrl+Opt+F.
  • Flexibility:
    • Undo/Redo the last snap using Ctrl+Opt+Z\text{Ctrl} + \text{Opt} + ZCtrl+Opt+Z.
    • Adjustable grid dimensions (rows/columns) and the gap (in points) between windows.
    • Choose whether to snap the focused window or the one under the cursor.
  • System Integration:
    • Supports multiple monitors (the grid appears on the display where your cursor is located).
    • Runs as a menu bar application with "Launch at Login" support.
    • No network access, no analytics, and no account requirements.
    • No distracting Dock icon.

Compatibility Note: Requires macOS 14 or later. While tested on macOS 26, users on older versions will see a frosted panel instead of the modern glass material for the grid.


🛠 Installation Guide

You can get GridSnap running via several methods:

  • Via Homebrew: brew install --cask konieczkow/tap/gridsnap
  • Manual Install: Download the GridSnap-x.y.z.zip from the latest release, extract it, and move the app to your /Applications folder.
  • Build from Source:
    git clone https://github.com/konieczkow/gridsnap.git
    cd gridsnap
    ./build.sh install
    open /Applications/GridSnap.app
    

⚠️ Essential Permissions

Because GridSnap manipulates other applications, it requires Accessibility permissions.

  1. Navigate to System Settings →\rightarrow→ Privacy & Security →\rightarrow→ Accessibility.
  2. Toggle GridSnap ON. (Tip: You can also click "Grant Accessibility..." in the menu bar icon to jump straight to this menu).

⌨️ Usage & Controls

ActionCommand / InputDescription
Show GridCtrl+Opt+D\text{Ctrl} + \text{Opt} + DCtrl+Opt+DOpens the snapping overlay (configurable).
Snap WindowClick or DragSelect cells and release to snap.
CancelEscDismisses the grid without changes.
Save PresetShift + ReleaseSaves the current selection as a preset.
Apply PresetCustom ShortcutInstantly snaps to a saved region.
Undo/RedoCtrl+Opt+Z\text{Ctrl} + \text{Opt} + ZCtrl+Opt+ZReverts or reapplies the last snap.

⚙️ Configuration & Development

Access the Settings via the menu bar icon. Here you can modify:

  • Global shortcuts.
  • Grid layout (columns/rows) and window gaps.
  • The target rule for window selection.
  • The presets table (names and shortcuts are editable in-place; use the − button to delete).

Technical Architecture

The project is written in Swift. Key files in Sources/ include:

  • main.swift: Application startup.
  • AX.swift: Handles the Accessibility API plumbing.
  • Grid.swift: Manages the visual overlay.
  • Presets.swift & Hotkeys.swift: Handle saved layouts and keyboard listeners.
  • SettingsWindow.swift & Menu.swift: UI components.
  • Defaults.swift: Manages persistent settings.

Developer's Note on Code Signing

macOS links Accessibility permissions to the app's signature.

  • Ad-hoc signatures change every build, forcing you to re-grant permissions constantly.
  • Solution: Create a self-signed "Code Signing" certificate named GridSnap Dev in Keychain Access. The build script will detect this automatically.
  • Alternatively, use: CODESIGN_IDENTITY="your_name" ./build.sh.

Note on Limitations: Some applications enforce a minimum window size. If a cell is smaller than the app's limit, the window will overlap adjacent cells.