explaingit

ianyh/amethyst

16,120SwiftAudience · developerComplexity · 2/5Setup · easy

TLDR

A macOS tiling window manager that automatically arranges all your open app windows into clean grid layouts and lets you control everything, focus, swap, resize, move between screens, from the keyboard.

Mindmap

mindmap
  root((Amethyst))
    Layouts
      Tall
      Wide
      Fullscreen
      Binary Space Partition
    Controls
      Keyboard shortcuts
      Focus windows
      Swap windows
      Resize panes
    Features
      Multi-screen support
      Virtual spaces
      Float mode
    Install
      Homebrew Cask
      GitHub releases
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Automatically tile all open windows into a main-pane-plus-stack layout without touching the mouse.

USE CASE 2

Cycle through layouts, Wide, Fullscreen, Binary Space Partitioning, to match your current workflow.

USE CASE 3

Throw windows to a different screen or virtual desktop with a single keyboard shortcut.

Tech stack

SwiftmacOS

Getting it running

Difficulty · easy Time to first run · 5min

Must grant macOS Accessibility permission under Security and Privacy on first run.

License terms were not mentioned in the explanation.

In plain English

Amethyst is a tiling window manager for macOS. Instead of leaving you to drag and resize app windows by hand, it automatically arranges the windows on each screen into a clean grid, and lets you move, resize, and reshuffle them entirely from the keyboard. The README describes it as being "along the lines of xmonad", a well-known tiling window manager from the Linux world. The way it works is straightforward in spirit. Whenever you open, close, or focus a window, Amethyst picks one of its built-in layouts and slots all visible windows into it. The default layout, called Tall, gives you one "main pane" on the left holding the primary window and a second pane on the right where every other window stacks. There are many alternative layouts to cycle through: Tall-Right, Wide, three different three-column layouts, Widescreen-Tall, Fullscreen, Column, Row, a free-floating mode, and a Binary Space Partitioning layout that recursively splits the screen as you add windows. A long list of keyboard shortcuts using two modifier combinations (option+shift and ctrl+option+shift) lets you change focus, swap windows, throw a window to another screen or virtual space, shrink or grow the main pane, toggle a window into floating mode, and pick a specific layout. You would reach for Amethyst if you work with many windows at once on a Mac and find macOS's manual window management slow or fiddly. Because it relies on the macOS accessibility APIs, you must grant Amethyst Accessibility permission under Security & Privacy on first run. Amethyst is written in Swift and supports macOS 10.12 and newer. You can install it from the GitHub releases page or through Homebrew Cask.

Copy-paste prompts

Prompt 1
I just installed Amethyst on macOS. Walk me through granting Accessibility permissions and setting the Tall layout as my default.
Prompt 2
What keyboard shortcuts do I use in Amethyst to move a window to a different screen, toggle floating mode, and resize the main pane?
Prompt 3
How do I configure Amethyst to always leave certain apps like Spotify or Finder floating and never tile them?
Open on GitHub → Explain another repo

← ianyh on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.