# Rectangle for macOS: Keyboard Shortcuts and Snap Areas for Window Management

> Rectangle is an open source macOS window manager based on Spectacle. It moves and resizes windows with keyboard shortcuts and edge drag snap areas, and it also exposes a rectangle:// URL scheme for scripting. Here is how it installs, what it does well, and where it stops.

**rxhanson/Rectangle** — Move and resize windows on macOS with keyboard shortcuts and snap areas

- Repository: https://github.com/rxhanson/Rectangle
- Website: https://rectangleapp.com
- Stars: 30,010 · Forks: 1,002
- Language: Swift
- License: NOASSERTION
- Published: 2026-09-10 · Updated: 2026-09-10 · Language: en
- Canonical page: https://hysenlabs.com/projects/rxhanson-rectangle

## What Rectangle solves, and for whom

macOS ships with no built-in way to place a window on the left half of the screen with a keystroke. You drag, you guess, you adjust. Rectangle fills that gap. It is a menu bar app that registers global keyboard shortcuts and edge drag zones, then resizes and moves the frontmost window to a named layout: halves, thirds, quarters, sixths, ninths, eighths, or a set of utility actions such as maximize, almost maximize, maximize height, center, and restore.

The README says the project is based on Spectacle, which was a popular free window manager for macOS that is no longer maintained. Rectangle is written in Swift and supports macOS v10.15 and later. Users who need macOS 10.13 or 10.14 are pointed at the v0.73 release instead. That version boundary matters if you are keeping an older Mac in service.

The audience is narrow and clear: Mac users who work with several windows at once and prefer the keyboard to the trackpad. It is not a tiling window manager in the automatic sense. Nothing rearranges your windows for you on launch. Every action is triggered by a shortcut, a drag, or a URL.

## How the shortcuts, snap areas and URL scheme fit together

Three input paths feed the same set of window actions. The first is keyboard shortcuts, recorded through MASShortcut, a library the README names as a difference from Spectacle, which used its own recorder. The second is snap areas: drag a window to a screen edge, and when the cursor reaches the edge a footprint appears showing where the window will land on release. The README's table maps those zones: left or right edge gives a half, top maximizes, corners give quarters, bottom left, center or right third give the respective third, and dragging from a bottom corner third to bottom center gives two thirds.

The third path is the URL scheme. Opening rectangle://execute-action?name=[name] performs an action, and the README lists the accepted names, including left-half, right-half, top-left, first-third, last-third, maximize, almost-maximize, maximize-height, smaller, larger, center, restore, next-display, previous-display, move-left, move-right, move-up, move-down, tile-all, cascade-all, and cascade-active-app. The same scheme handles tasks: rectangle://execute-task?name=ignore-app and unignore-app, optionally with an app-bundle-id parameter.

Ignoring is worth understanding because it is a real mechanism, not a toggle. When you ignore an app, Rectangle un-registers its keyboard shortcuts from macOS while that app is frontmost, then re-registers them when the app loses focus. That is how it avoids fighting an app that uses the same key combinations.

## Installing Rectangle and running a first action

The README gives two install routes. You can download the latest dmg from rectangleapp.com or the GitHub Releases page, or use the Homebrew cask. The cask command is the one to copy if you already use Homebrew:

```bash
brew install --cask rectangle
```

After installing, launch Rectangle. macOS will require Accessibility permission before the app can move other windows, and the README's troubleshooting notes that most resizing failures have been caused by other apps, so it is worth checking that permission first if nothing happens.

Once it is running, the fastest way to confirm it works is a keyboard shortcut on the frontmost window. The README describes the shortcuts as self-explanatory and does not print a default key map, so use whatever Rectangle shows in its menu for left half, right half, or maximize.

The scripting path needs no permission beyond what the app already has. The README gives this example, which moves the frontmost window to the left half from a shell:

```bash
open -g "rectangle://execute-action?name=left-half"
```

The -g flag tells open not to bring the target app to the foreground, which matches the README's advice not to activate Rectangle if possible. The same pattern works for any action name in the README's list, for example name=first-third or name=next-display.

Ignoring an app can also be done from the menu or from a URL. The README shows the task form with a bundle identifier, so you can ignore Safari without focusing it first:

```
rectangle://execute-task?name=ignore-app&app-bundle-id=com.apple.Safari
```

The README notes that the bundle identifier variant is supported, and that ignoring un-registers shortcuts while that app is frontmost.

## Where Rectangle stops: Spaces, minimum sizes and iTerm2

The most consequential limitation is stated plainly in the README: Rectangle cannot move windows to other desktops or Spaces. Apple never released a public API for it. The README says Rectangle Pro has next/prev Space actions, but there are no plans to add them to Rectangle. If your workflow depends on pushing a window to another Space with a keystroke, this project is the wrong tool and no configuration will change that.

The second limitation comes from the apps themselves. Some applications enforce a minimum window size larger than the requested layout. A window with a minimum width of 600 points cannot fit a 504-point third of a display. Rectangle keeps the window on screen and briefly shows a "Window size limited" message when the app leaves it larger than requested. It cannot override an app's minimum size. The README's own suggestion is to use a larger layout such as halves, or to resize the adjacent window by hand. That is a sensible fallback, but it means thirds and smaller fractions are unreliable in exactly the apps that are most rigid.

iTerm2 has a related but separate issue. By default it resizes in increments of character widths, so Rectangle's result is slightly off. The README gives a defaults command to change that behavior, and notes there may be a setting inside iTerm2 as well. There is also a reported interaction with Notification Center freezing, which the README says affects a small number of users and can be avoided by unchecking "Snap windows by dragging". That workaround costs you the snap area feature entirely, which is a real trade-off rather than a minor setting.

## How Rectangle differs from Spectacle and from automatic tiling managers

Rectangle's closest reference point is Spectacle, the project it is based on. The README lists the differences directly. Rectangle uses MASShortcut for shortcut recording instead of Spectacle's own recorder. It adds actions Spectacle did not have: moving windows to each edge without resizing, maximizing only the height, and almost maximizing. It replaces Spectacle's next/prev screen thirds cycling with explicit first third, first two thirds, center third, last two thirds, and last third, taking screen orientation into account so that first third is the left third in landscape and the top third in portrait. Spectacle's cycling behavior can still be emulated by repeatedly executing first third or last third. Rectangle also offers an option to have windows traverse across displays on subsequent left or right executions, and it snaps windows when dragged to edges, which can be disabled.

The other comparison is with automatic tiling window managers, which arrange every window by rule rather than by explicit command. Rectangle does not work that way. You trigger each placement. That is a different design philosophy, and it is the reason Rectangle can coexist with normal macOS window behavior instead of replacing it. The cost is that you keep pressing keys. The benefit is that nothing moves unless you ask it to.

A third point of comparison is Rectangle Pro, mentioned in the README only in the context of Spaces. The README does not describe Pro's full feature set, so the only difference you can rely on from this material is that Pro has next/prev Space actions and Rectangle does not.

## Maintenance, licence and upgrade cost

The repository is not archived, and the last push was on 2026-09-07. The most recent release listed is v1.100 on 2026-08-26, preceded by v0.99 on 2026-08-20 and v0.98 on 2026-07-15. Those dates are close together, which suggests an active release cadence, but the only facts available are the dates themselves.

The licence field in the repository metadata is NOASSERTION, which means GitHub could not match the LICENSE file to a known licence identifier. The repository does contain a LICENSE file at the top level, so the terms exist, but you should read that file rather than assume a specific licence. If you plan to redistribute Rectangle, bundle it into an internal image, or modify it, the LICENSE file is the document that governs what you may do. This is not legal advice, and the NOASSERTION value is a signal to check the file itself, not a statement that the project is unlicensed.

Upgrade cost is low in normal use. Rectangle is distributed as a dmg and as a Homebrew cask, and the README does not document a rollback procedure, so downgrading means fetching an older release manually. The one version boundary the README does document is macOS support: v10.15 and later for current releases, and v0.73 for macOS 10.13 and 10.14. If you support machines on older macOS versions, that is the constraint to plan around.

## Conclusion

Rectangle fits Mac users who want keyboard-driven window placement without paying for a commercial tool, and who accept that Spaces movement is out of scope. It is the wrong tool if you need apps moved between desktops or Spaces, or if an app enforces a minimum window size larger than the layout you asked for. Before adopting it, check that your macOS version is 10.15 or later, that you are comfortable granting Accessibility permission, and whether the apps you use most have shortcut conflicts that would make the Ignore app feature necessary.

## FAQ

### How do I install Rectangle on macOS?

Download the latest dmg from rectangleapp.com or the GitHub Releases page, or install with the Homebrew cask using brew install --cask rectangle. Rectangle supports macOS v10.15 and later.

### How do I use Rectangle on a Mac?

Use the keyboard shortcuts shown in the Rectangle menu, or drag a window to a screen edge and release when the footprint appears. The README's table maps edges to halves, the top to maximize, corners to quarters, and the bottom thirds to the respective third.

### How do I use the Rectangle app on macOS?

The app works through three inputs: keyboard shortcuts, edge drag snap areas, and the rectangle:// URL scheme. For example, open -g "rectangle://execute-action?name=left-half" moves the frontmost window to the left half from a shell.

### How do I use Rectangle?

Rectangle acts on the frontmost window through keyboard shortcuts, edge drag snap areas, or the rectangle:// URL scheme. The README describes the keyboard shortcuts as self-explanatory and explains the snap areas in a table mapping each screen zone to a resulting action.

## Sources

- [Issues](https://github.com/rxhanson/Rectangle/issues)
- [Project website](https://rectangleapp.com)
- [README](https://github.com/rxhanson/Rectangle/blob/main/README.md)
- [Releases](https://github.com/rxhanson/Rectangle/releases)
- [rxhanson/Rectangle on GitHub](https://github.com/rxhanson/Rectangle)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/rxhanson-rectangle
