melreusthe rectangle field manual

Config

Tile All and Cascade All: The Bulk Window Commands Nobody Knows About

Everything else in the app moves one window. These four move all of them, and they are invisible until you bind them from the terminal.

11 Jul 2026 · 5 min read · updated for current macOS

Before — twelve overlapping windows???After — tileAll1234
One keystroke arranges every visible window into a grid.

The four commands

KeyActs onResult
<code>tileAll</code>Every visible windowArranged into a grid
<code>cascadeAll</code>Every visible windowStacked with offset title bars, all reachable
<code>tileActiveApp</code>Windows of the frontmost app onlyGrid, leaving everything else untouched
<code>cascadeActiveApp</code>Windows of the frontmost app onlyCascaded and brought to the front

The per-application variants are the more useful pair in practice, and the reason is straightforward: acting on every visible window is a blunt instrument that will rearrange things you were happy with, whereas acting on one application's windows is a targeted operation you can predict.

# ctrl+shift+2 → cascade the frontmost app's windows
defaults write com.knollsoft.Rectangle cascadeActiveApp -dict-add keyCode -float 19 modifierFlags -float 393216

# ctrl+shift+1 → tile the frontmost app's windows
defaults write com.knollsoft.Rectangle tileActiveApp -dict-add keyCode -float 18 modifierFlags -float 393216

killall Rectangle && open -a Rectangle

When these are genuinely better

Comparing many documents of the same kind. Six Preview windows with six PDFs, or eight browser windows: tiling the active app puts them all in view in one keystroke, which is otherwise a minute of snapping.

Finding a lost window. Cascading the active app reveals every window's title bar at once. Faster than cycling with the window menu when you have fifteen open and cannot remember which is which.

Recovering after a display change. When undocking has scattered everything, tiling all visible windows gets you to a known state you can then adjust, rather than reconstructing from chaos.

Screen sharing setup. Cascade, pick the two you need, snap those into halves, and everything else is behind. Two seconds instead of thirty on a call where people are watching.

Why the per-app versions win

<code>tileAll</code> touches everything visible, including windows on other Spaces' shared apps and utilities you had deliberately positioned. <code>tileActiveApp</code> is scoped, predictable and therefore usable as a reflex. Bind that one first.

What they do not do

If you want a repeatable, named, multi-window arrangement rather than a computed one, that is what saved layouts in the paid tier are for. These commands are for imposing order quickly on a mess, not for expressing an intended layout.

Binding them sensibly

Because they are drastic, do not put them on combinations adjacent to the ones you use constantly. A misfired tile-all in the middle of focused work is genuinely disruptive. Something distinct — with Shift, or on the number row — keeps them deliberate.

⌃ Control+⇧ Shift+1Tile the frontmost app's windows⌃ Control+⇧ Shift+2Cascade the frontmost app's windows⌃ Control+⇧ Shift+3Tile everything visible — use sparingly
A binding scheme that keeps bulk operations away from everyday shortcuts.

Restore does not undo these. There is no bulk undo, which is another argument for the scoped variants — recovering from a mis-tiled single application is far quicker than rebuilding a whole desktop.

Get the current build

Rectangle is free and open source. Everything documented here works in the standard build.

Download from rectangleapp.com

Questions

Can I undo a tile-all?

No. Restore works on one window at a time; there is no bulk undo.

Can I choose the grid shape?

No. It is derived from the number of windows.

Does it work across displays?

It arranges visible windows on the display each one currently occupies.

Why are these hidden?

They are drastic operations that most users would trigger by accident if bound by default.