Window manager · macOS 26 Tahoe · v1.1

Windows, where you want them.

Frame is a native window manager for macOS 26 — keyboard snaps and edge zones for halves, thirds, maximize, and multi-display. New in 1.1: per-display dead zones so maximize never lands on the strip of a monitor you can’t see. What you press is what you get.

Download for Mac See dead zones free · signed & notarized · Sparkle updates
live demo · snap a window on the desktop ready

pick a layout — the window lands exactly there. press again: same place.

snap zone footprint freeform window no size cycling on repeat

What it does

Snap with the keyboard. Drag when you want.

Rectangle free-tier parity for Tahoe — layouts you already know, without surprise cycling or a Pro paywall.

Keyboard

⌃⌥ first

Halves, corners, thirds, maximize, center, restore, larger/smaller, and next/previous display — rebind anything in Settings.

⌃⌥ ← left · ⌃⌥ → right · ⌃⌥ ↩ max
U I / J K corners · D F G thirds
Drag

Edge & corner zones

Drag a window to an edge or corner and a live footprint previews the landing. Drop it — it snaps where you meant.

edges → halves · corners → quarters
live overlay while you drag
Exact

What you press is what you get

Left half is left half. Every time. No silent size-cycling on the second press unless you turn that on yourself.

press → left · press → left · press → left
not ½ → ⅔ → ⅓
Displays

Multi-display aware

Send the front window to the next or previous display, ordered the way your monitors are arranged — not by random IDs.

[ screen 1 ] → next display → [ screen 2 ]
⌃⌥⌘ → / ←
1.1 · New

Dead zones

Reserve top, left, bottom, or right edges per monitor. Snaps and maximize respect the no-go strip — perfect for an obscured secondary bezel.

Settings → Displays · bottom 40 pt
live preview · presets · per monitor
Stack

Modern, public APIs

Swift 6, Accessibility window moves, Sparkle auto-updates from this site. No private window-server hacks.

AX size → pos → size · timeout ~0.25s
snappy, not “wait six seconds”

New in 1.1 · Dead zones

Your second monitor has a secret. Frame already knows.

That bottom strip on an external display you can’t actually see? The few pixels under a stand, a docking ledge, or a bezel macOS still thinks is usable? Frame lets you mark it as a no-go — then every snap, half, third, and maximize stays out of it.

per-display · points, not guesswork

Define the edges windows never enter.

macOS already trims the menu bar and Dock. Dead zones go further: you reserve extra edges on any connected monitor — top, left, bottom, right — and Frame’s work area shrinks so layouts never paint into the dark.

  • Per monitor. Bottom 40 on the secondary only. Leave the built-in display full-bleed if you want.
  • Every layout path. Hotkeys, drag-to-snap, maximize, tile, cascade — all share the same usable rect.
  • Settings that feel alive. Live diagram, sliders, steppers, and quick presets (Bottom 20 / 40 / 60).
  • Survives unplug. Zones stick to a display ID and show as “disconnected” until the monitor returns.
Get Frame 1.1 Then open Settings → Displays
interactive · maximize on secondary with dead zone · bottom 40
Secondary obscured
usable work area dead zone / obscured pixels Settings → Displays · Bottom 40

The contract

Hotkeys that do the thing.

Some managers “helpfully” cycle sizes when you hit the same shortcut again. Frame defaults to exact action — because muscle memory should not need a state machine.

THE CYCLING WAY surprise state second press ≠ first

You train left half into your hands. The second press becomes two-thirds. The third becomes one-third. Suddenly the window is the wrong size and you’re not sure which press you’re on.

⌃⌥ ← left half
⌃⌥ ← two thirds?
⌃⌥ ← one third?
…where am I?
THE FRAME WAY exact action default · no cycle
  • Same key → same layout. Left half is left half on every press. Center third is center third. Always.
  • Key-down, not key-up. Moves start as soon as you commit — no waiting for release or Task hops.
  • Short AX timeout. Messaging timeout ~0.25s so a stuck window doesn’t freeze the next shortcut.
  • You still choose. Prefer cycle? That’s a preference later — not a surprise default.
⌃⌥ ← left half
⌃⌥ ← left half
⌃⌥ ← left half
done.

Windows should land where you aimed. Exact action · drag zones · dead zones · multi-display — free for macOS 26.

Requirements

What it needs.

System

macOS 26 Tahoe

Built for Tahoe’s windowing stack — not a patched Mojave port.

Hardware

Apple Silicon

arm64 release. Multiple displays fully supported.

Permission

Accessibility

Required to move other apps’ windows. Nothing is logged or sent anywhere.

Price

Free

No account, no subscription. Signed, notarized, Sparkle auto-updates.

Download

Get Frame.

  1. Download and open

    Grab the zip, drag Frame.app into /Applications, and open it. Grant Accessibility when macOS asks.

  2. Snap something

    Focus any window and press ⌃⌥ ← for left half. Drag another window to a screen edge to try zones.

  3. Tune the shortcuts

    Open Settings from the menu bar icon. Rebind anything — Rectangle-style defaults are pre-loaded.

  4. Carve dead zones

    Open Settings → Displays. On the secondary monitor, try Bottom 40 — then maximize. The window stops above the strip you can’t see.

  5. Forget the installer

    Optional launch at login. Updates arrive on their own via Sparkle from this site.

Frame.zip · direct download

free · macOS 26+ · Apple Silicon
signed & notarized by Apple · auto-updates via Sparkle
appcast · changelog · source