Azimuth
A keyboard-driven window manager for macOS.
Predictability over clever inference.
Everything in one modifier layer.
Nine kinds of command, 34 shortcuts. No scenes. No automation. Just a reliable spatial grammar for your windows.
Snap a window to a screen half. Press the same edge again to throw it to the adjacent display, landing in the opposite half.
Left/center/right and top/middle/bottom — horizontal and vertical. Axis-independent, so they compose freely.
Maximize fills the work area (minus menu bar and Dock); Maximize with gaps leaves a uniform inset on all sides. Center keeps the current size and places the window in the middle.
Nudge the window one step in any direction — by its own width or height — clamped at the work-area edge. Never resizes, never changes display.
Shrink the window to ½ or ⅔ of its current size against a pinned edge — based on the window, not the screen. Effects compose: ⅔ then ½ lands on ⅓.
Send the window to an adjacent monitor, preserving its shape and relative position. It keeps its pixel size, shrinking proportionally only if it doesn't fit.
Restore the previous frame, one step per window. Display reconfiguration clears history.
Position-aware adjacent-display selection: the window goes to the monitor that spatially lines up with where it currently sits.
Standard (arrow keys) and Vim (HJKL). Both fully customizable per-command, with conflict warnings and per-command Reset in Settings.
Azimuth checks for new notarized, signature-verified releases and updates itself (Sparkle); or check on demand.
See it in action
Predictable placement and snap-throw across displays — keyboard only, no mouse.
Modifier layers
Four modifier combinations, each governing a distinct class of behavior. The layers never overlap.
| Group | Command | Shortcut |
|---|---|---|
| Halves | Left | ⌃⌥← |
| Right | ⌃⌥→ |
|
| Top | ⌃⌥↑ |
|
| Bottom | ⌃⌥↓ |
|
| Maximize · Undo · Center | Maximize | ⌃⌥↩ |
| Maximize with gaps | ⌃⌥⇧↩ |
|
| Undo | ⌃⌥⌫ |
|
| Center | ⌃⌥C |
|
| Thirds (1/3) | Horizontal: left · center · right | ⌃⌥123 |
| Vertical: top · middle · bottom | ⌃⌥456 |
|
| Two-thirds (2/3) | Horizontal: left · right | ⌃⌥78 |
| Vertical: top · bottom | ⌃⌥90 |
|
| Move (keep size) | Left · Right · Up · Down | ⌃⌥⌘←→↑↓ |
| Relative shrink (½) | Left · Right · Up · Down | ⌃⌥⇧←→↑↓ |
| Relative shrink (⅔) | Left · Down · Up · Right | ⌃⌥⇧M,./ |
| Move to next display | Left · Right · Up · Down | ⌃⌥⌘⇧←→↑↓ |
H (left) ·
L (right) ·
K (up) ·
J (down), Undo → U.
Maximize, Center, and number shortcuts are identical.
How it works
Three behaviors that define Azimuth's spatial model.
First press snaps to the left half. Second press on the same edge throws the window to the adjacent display, landing in the opposite half.
The window steps by its own width and stops at the work-area boundary. No resize, no display change — just a reliable nudge.
Move to next display keeps the window's relative position and size. If it doesn't fit, both axes shrink by the same factor, so the aspect ratio never changes.
Requirements & install
Download the notarized DMG — no build tools required.
Requirements
- macOS 13 (Ventura) or later — on macOS 10.13–12, use the legacy build below. Ventura no longer receives Apple security updates, so use the newest macOS your Mac supports.
- Accessibility permission — Azimuth controls other apps' windows via the Accessibility API. Grant it in System Settings on first launch (macOS 10.13–12: System Preferences).
Install
- Download the .dmg from the link below.
- Drag Azimuth to your Applications folder.
- Launch Azimuth from Applications.
- Enable Azimuth in System Settings → Privacy & Security → Accessibility (macOS 10.13–12: System Preferences → Security & Privacy → Privacy → Accessibility).
The download is Developer ID–signed and notarized by Apple, so it opens without Gatekeeper warnings.
macOS 10.13–12? Download the legacy build (1.7.2 Legacy). It keeps the core features but gets no new ones. After you upgrade to macOS 13 or later, its next update check switches it to the regular version.
Download for macOS 10.13–12 (.dmg)Or with Homebrew:
brew install --cask ai-screams/tap/azimuth
Frequently asked questions
Why does Azimuth need Accessibility permission?
It moves and resizes other apps' windows via the macOS Accessibility API — the standard mechanism for all window managers. Azimuth does no keylogging and makes no network connection except the Sparkle update check.
Does it work on older macOS?
Yes. On macOS 10.13 (High Sierra) through 12 (Monterey), use the legacy build (1.7.2 Legacy) from Requirements & install. It keeps the core features (window commands, shortcuts, menu, undo) and most settings, but gets no new ones. Launch at login needs macOS 13 and failure notifications need macOS 10.15. It updates itself, and after you upgrade to macOS 13 or later its next update check switches it to the regular version. Tested on a real Mac with macOS 10.13.6 and in macOS 12 and 13 virtual machines; 10.14–11 have not been tested on real hardware. These macOS versions no longer get Apple security updates, so upgrade if your Mac can.
Can I customize the shortcuts?
Yes — open Settings → Shortcuts. You can set per-command bindings, view conflict warnings, toggle command groups on or off, and switch between Standard (arrow keys) and Vim (HJKL) presets.
How are updates delivered?
In-app via Sparkle — notarized and EdDSA-signature-verified. You can also check on demand from the menu bar icon. If you installed with Homebrew (brew install --cask ai-screams/tap/azimuth), updates still come through Sparkle in the app; brew upgrade will not fight the built-in updater.
Support Azimuth
Azimuth is free and open source — no paywall, no ads, no telemetry — and it always will be. If it earns a place in your workflow, you can chip in to fund development. A supporter license just says thanks; it unlocks nothing, since every feature is already free for everyone.