About this project
Rectangle is a window management app for macOS, described as based on Spectacle. It targets macOS v10.15 and later; the last release supporting macOS 10.13 and 10.14 is v0.73. It can be installed from a dmg at rectangleapp.com or the Releases page, or via Homebrew cask (`brew install --cask rectangle`).
Core functionality is moving and resizing windows with keyboard shortcuts and snap areas. Dragging a window to a screen edge shows a footprint preview of the resulting layout: left/right edge gives a half, top maximizes, corners give quarters, edges just above or below a corner give top/bottom halves, and bottom thirds give the respective third (with drag-to-center combinations for two-thirds).
Tiling is available through a Tiling submenu (Rows and Columns) when "Show additional sizes in menu" is enabled, and separate shortcuts for Tile Windows in Rows/Columns can be assigned under Settings > General > Extras. Tiling arranges ordinary windows in the current Space on the display containing the focused window, or the display under the pointer when no ordinary window is focused. Rows run top to bottom and columns left to right, ordered by windows' upper-left positions. Bands fill the work area inside macOS reservations (menu bar, Dock) and configured screen-edge gaps where apps allow; minimum window sizes are respected, and layouts may be partial if an app does not respond in time. The Todo window is excluded and its sidebar reservation is respected.
An app can be ignored so that Rectangle's shortcuts are unregistered while that app is frontmost and re-registered afterward, useful when shortcuts conflict. This is done from the Rectangle menu.
Actions can be triggered by URL: `rectangle://execute-action?name=[name]`, with a long list of names covering halves, thirds, fourths, sixths, ninths, eighths, maximize variants, smaller/larger, center, restore, display navigation, move directions, tile-all/rows/columns, and cascade actions. Tasks such as ignore/unignore can be invoked via `rectangle://execute-task?name=...`, optionally with a bundle identifier. Hidden preferences are documented in TerminalCommands.md.
Differences from Spectacle include use of MASShortcut for shortcut recording, additional actions (move to edge without resizing, maximize height, almost maximize), explicit first/center/last thirds instead of cycling (orientation-aware), optional cross-display traversal, and drag-to-edge snapping that can be disabled.
Known issues cover the lack of a public API for moving windows between Spaces/desktops, overlap when apps enforce minimum sizes (with a "Window size limited" message), iTerm2 resizing in character-width increments (fixable via a defaults command), and rare Notification Center freezes mitigated by disabling snap-by-dragging. Troubleshooting guidance includes lock/unlock, restart, debug logging (via the alt-key menu item "View Logging..."), checking for conflicting window managers or shortcuts, testing with a new macOS user, and resetting accessibility permissions with `tccutil reset All com.knollsoft.Rectangle`.
Configuration is stored in NSUserDefaults at `~/Library/Preferences/com.knollsoft.Rectangle.plist`, and JSON config import/export is available in preferences; a config file placed at `~/Library/Application Support/Rectangle/RectangleConfig.json` is loaded at launch and renamed with a timestamp. Uninstallation is by quitting and trashing the app, optionally deleting defaults or using `brew uninstall --zap rectangle`.
Contributions are welcomed, including localizations in Main.strings and additional sizes/positions via the Extra Shortcuts section. The project uses Swift Package Manager for Sparkle and a forked MASShortcut, and notes a build failure on macOS versions below 26 due to the Liquid Glass icon unless the Asset Catalog Other Flags are removed locally.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.