Amethyst is the xmonad of the Mac. It's a free tiling window manager that arranges every window on screen for you, re-fitting them each time one opens or closes. It's been around for years, it's MIT-licensed ("free and always will be", says the README), and it's still maintained: v0.24.3 shipped on 2 April 2026. It runs on macOS 10.15 Catalina and later, which is further back than almost anything else in this category.
We make Ribbon, a different kind of window manager, and we compare the two at the end. Most of this page is just Amethyst.
Install and first run
brew install --cask amethyst, or download it from GitHub releases.- Grant Accessibility when it asks. That's the only permission it needs. SIP stays on.
- Turn off "Automatically rearrange Spaces based on most recent use" (System Settings → Desktop & Dock → Mission Control). Amethyst's own docs recommend it, or Spaces shuffle and keyboard navigation gets unpredictable. In Terminal:
defaults write com.apple.dock workspaces-auto-swoosh -bool NO, thenkillall Dock. - Open a few windows and press mod1 + Space to cycle layouts.
The keys you'll actually use
Amethyst has two modifier sets: mod1 = ⌥⇧ and mod2 = ⌃⌥⇧.
| Keys | Does |
|---|---|
| mod1 + Space / mod2 + Space | Next / previous layout |
| mod1 + J / K | Focus counter-clockwise / clockwise |
| mod2 + J / K | Swap the window counter-clockwise / clockwise |
| mod1 + Enter | Swap the focused window with the main window |
| mod1 + H / L | Shrink / expand the main pane |
| mod1 + , / . | More / fewer windows in the main pane |
| mod2 + ← / → | Throw the window to the Space on the left / right |
| mod1 + Z | Re-evaluate windows when something looks wrong |
All of it can be rebound in Preferences, or in an optional YAML file in your home folder. If that file exists, it overrides the GUI. That trips up a lot of people who change a setting and see nothing happen.
The 14 layouts
| # | Layout | Good for |
|---|---|---|
| 1 | Tall | One main window on the left, the rest stacked on the right. The classic coding layout |
| 2 | Tall-Right | Same, mirrored |
| 3 | Wide | Main window on top, the rest in a row underneath |
| 4 | Middle-Wide | Main window in the centre, helpers on both sides. Nice on ultrawides |
| 5 | Two Pane | Exactly two windows side by side |
| 6 | 3Column-Left | Three columns, main on the left |
| 7 | 3Column-Middle | Three columns, main in the middle |
| 8 | 3Column-Right | Three columns, main on the right |
| 9 | Widescreen-Tall | Tall, tuned for very wide displays |
| 10 | Fullscreen | Every window maximised. Cycle between them |
| 11 | Column | Every window gets an equal full-height column |
| 12 | Row | Every window gets an equal full-width row |
| 13 | Floating | Amethyst steps back |
| 14 | BSP | Each new window splits the focused one, yabai-style |
Out of the box only four are switched on: Tall, Wide, Fullscreen and Column. Turn on the others you want in Preferences, or in the layouts list in the YAML file. There are also Custom (beta) layouts written in JavaScript.
Amethyst vs yabai, briefly
Both tile automatically and both are free. Amethyst has a preferences window, xmonad-style main-pane layouts and nothing to script. yabai is BSP-first, configured with a shell script plus skhd, and much more scriptable, but some extras need SIP partly off. If you want to click settings, use Amethyst. If you want to write them, use yabai (yabai on Mac).
Where Amethyst struggles
All 14 layouts share one rule: every window has to fit on the screen. With three windows on a 27-inch monitor, that's perfect. With seven on a 14-inch MacBook, Column layout gives each window a sliver about as wide as a phone screen. Tall keeps the main window big but crushes the stack to a few lines each. That isn't a bug in Amethyst. It's what fit-to-screen tiling does when you have more windows than space.
Amethyst vs Ribbon
Ribbon answers the opposite question: what if the windows didn't have to fit? Every window is a full-height column on a strip that runs past the screen edge. Opening a window adds a column, and nothing else changes size. Amethyst's Column layout is the closest relative. Picture it with columns that keep their width and scroll sideways instead of getting thinner.
| Amethyst | Ribbon | |
|---|---|---|
| New window | Every window is resized | New column; the others don't move |
| Layouts | 14 plus custom JS | One strip, plus stacks (⌃⌥S), tabbed columns (⌃⌥T) and one-shot grids (⌘⌃2 … ⌘⌃6) |
| Main pane | Yes | No. Each column has its own width (¼ to full, ⌃⌥R) |
| Trackpad | None | Three-finger swipe, or Option + two-finger scroll |
| Keys | mod1/mod2, xmonad-style | ⌃⌥ chords. A Vim style gives ⌃⌥H/J/K/L |
| Config | GUI or YAML (YAML wins) | GUI, written to ~/.config/ribbon/ribbon.toml |
| macOS | 10.15+ (Intel and Apple silicon) | 14+, Apple silicon |
| Price | Free | One-time from $12, no free trial |
Keep Amethyst if you use a big monitor, like a main window with helpers, run an older macOS or an Intel Mac, or simply don't want to pay. It's genuinely good, and we'd recommend it in those cases.
Try Ribbon if you're on a laptop with five or more apps open and tired of windows getting thinner every time you open one.
Switching? Quit Amethyst and remove it from login items first, because two tilers fight. Pick Ribbon's Vim style so J/K-style movement feels familiar. "Expand main pane" becomes ⌃⌥R on the focused column, and the Fullscreen layout becomes ⌃⌥F on one column.