An excerpt from the repository, fetched Nov 12, 2026.
Read the project’s introduction
Rectangle
English | 简体中文
Rectangle is a window management app for macOS based on Spectacle.
System Requirements
Rectangle supports macOS v14+.
For macOS 10.15 - 13: v1.100
For macOS 10.13 and 10.14: v0.73
Installation
You can download the latest dmg from https://rectangleapp.com or the Releases page.
Or install with brew cask:
brew install --cask rectangle
How to use it
The keyboard shortcuts are self explanatory, but the snap areas can use some explanation if you've never used them on Windows or other window management apps.
Drag a window to the edge of the screen. When the mouse cursor reaches the edge of the screen, you'll see a footprint that Rectangle will attempt to resize and move the window to when the click is released.
Snap Area
Resulting Action
Left or right edge
Left or right half
Top
Maximize
Corners
Quarter in respective corner
Left or right edge, just above or below a corner
Top or bottom half
Bottom left, center, or right third
Respective third
Bottom left or right third, then drag to bottom center
First or last two thirds, respectively
In Behavior > Extras, enable Animate windows for smooth window resizing, or in Snap Areas, enable Blur footprint for a blurred snap preview. Both are off by default. Animated snapping keeps the selected edge or center aligned when an app limits its window size or aspect ratio. Dragging a snapped window starts restoring its previous size as the window begins moving, and a quick release lets the remaining restore animation continue. Far-right title-bar grabs can still show visible jumps. Title-bar double-click maximize/restore follows the same animation setting and timing as snapping. Window animation has been tested in known scenarios, but remains experimental because repeatedly updating the window's size and position during the transition may cause issues in some edge cases.
Tile windows in rows or columns
In Behavior > Extras, enable Show Extra shortcuts in menu to include Rows and Columns in the Tiling submenu. Their keyboard shortcuts remain available when the submenu is hidden.
In Settings > Shortcuts, expand ⋯ and then Extra to assign separate keys to Tile in Rows and Tile in Columns. Each action arranges ordinary windows in the current Space on the display containing the focused window, including windows covered by others. When no ordinary window is focused, the display under the mouse pointer is used instead. Tile All uses the same display-selection rule. Normally, windows on another display stay in place, and an empty target display does nothing. When Rectangle's combined-display mode is enabled and macOS "Displays have separate Spaces" is disabled, Rows and Columns instead tile across the combined display area. Rows run from top to bottom; columns run from left to right. Within either direction, Rectangle uses the windows' upper-left positions before moving them to choose their order.
From an unrecognized layout, the first press starts with one window per row or column. Repeating the action cycles through distinct grid layouts. Click the gear button next to Tile in Rows to set Maximum windows per column and Maximum windows per row, which control the cycle independently. Both default to 3 and are independent of the single-window Repeated commands setting. Set either limit to 1 to keep that action's original one-window-per-row-or-column behavior. Existing saved limits are preserved.
Windows are balanced across occupied rows or columns, with no deliberately empty cells. For example, six windows with a column limit of 3 cycle through six columns of one, three columns of two, two columns of three, then repeat. Five windows cycle through column populations 1,1,1,1,1, 2,2,1, and 3,2. A column with fewer windows still fills its full height; rows behave the same way across their full width. Duplicate layouts are skipped, so four windows with a limit of 3 alternate between four groups of one and two groups of two. Limits above the number of windows add no layouts.
Columns have equal widths and rows have equal heights, within one display pixel, when the apps allow it. The grid fills the selected work area inside macOS reservations (such as the menu bar and Dock) and Rectangle's configured screen-edge gaps. App size restrictions take precedence: if two columns share 1000 pixels and one requires at least 600, a feasible allocation is 600/400. If no allocation satisfies all app restrictions, Rectangle still attempts the layout, which may leave a gap or overlap. If an app does not respond in time, the layout may remain partial.
Moving or resizing a window, opening or closing one, or changing screen-edge gaps does not rearrange windows automatically. The next press of the same action reapplies its active grid layout using the current windows and their positions. A press that would leave the layout unchanged advances immediately. Lowering a limit below the active layout uses the greatest allowed layout on the next press. Rectangle keeps the active layout only while it is running. After a restart, the first press advances from an intact, recognizable grid; otherwise it starts with one window per row or column.
The Todo window is excluded using the same rules as Rectangle's other multi-window actions. The bands respect the existing Todo sidebar reservation. For example, with 1000 pixels available and a 200-pixel sidebar reservation, the other windows tile within the remaining 800 pixels while Todo stays in place.
Cycle stacked windows
When several windows are snapped to the same area, such as three windows on the left half, only the front one is visible. In Settings > Behavior > Stacked Windows, assign keys to Cycle stacked windows and Cycle stacked windows backward. Each press brings forward one window from the stack that the focused window belongs to.
A window is in the stack when it sits at the same position as the window focused at the first press, or is offset from it by Offset window position on overlap, whatever its size.
Read the full README on GitHub