ianyh

Amethyst: Tile and Arrange Windows on macOS

Amethyst is a macOS window manager that automatically arranges windows in tiling layouts, with keyboard controls inspired by xmonad. It suits people who want predictable window placement and keyboard-driven navigation across desktops and screens.

Stars
16.3k
Forks
536
Stars, last 10 days
+19

Our take

Health score

45/100

How it is scored
Activity
48
Community
58
Issues
47
Pull requests
26

+19 stars in the last 10 days

  • More contributors than 75% of the projects we track
  • Slower to merge pull requests than 98% of the projects we track

Overview

Amethyst automatically arranges macOS application windows into configurable tiling layouts. Instead of manually positioning and resizing each window, users can organize a workspace around a main pane, columns, rows, fullscreen windows, or other layouts.

It is aimed at people who prefer keyboard-driven window management, especially users familiar with tiling managers such as xmonad. It can be useful for focused work across multiple windows, displays, or Spaces, but is less suited to workflows that depend on freely overlapping windows.

Key Features

  • Automatically tiles application windows using selectable layouts.
  • Offers layouts including Tall, Wide, Column, Row, Fullscreen, Floating, and Binary Space Partitioning.
  • Provides shortcuts to move focus, resize the main pane, change layouts, and rearrange windows.
  • Supports sending windows between screens and macOS Spaces.
  • Allows users to configure shortcuts and settings through the GUI or a YAML configuration file.
  • Supports custom layouts implemented in JavaScript, described as beta in the README.

Use Cases

  • Developers who keep an editor, terminal, and documentation visible and want them arranged without manual resizing.
  • Keyboard-focused Mac users who want to navigate windows and screens without reaching for the mouse.
  • People using multiple monitors or Spaces who want shortcuts for moving windows between them.
  • Users who want to switch between structured tiling and a floating layout for tasks that need overlapping windows.

Getting Started

Install with Homebrew Cask:

brew install --cask amethyst

Amethyst requires Accessibility permission to manage windows. See the README for setup, configuration, and troubleshooting details.

Alternatives

  • yabai: yabai offers more extensive control of macOS windows, spaces, and displays through a CLI and supports binary space partitioning layouts.
  • AeroSpace: AeroSpace uses an i3-like workflow with plain-text configuration and workspace controls, while Amethyst is inspired by xmonad.
ProjectLanguageLicenseStarsStatus
AmethystSwiftMIT16.3kNot checked yet
yabaiCMIT29.7kQuiet
AeroSpaceSwiftMIT23.3kActive

Considerations

  • The README states that Amethyst is supported on macOS 10.15 and later.
  • It needs macOS Accessibility permission to control windows.
  • macOS Spaces settings can affect predictable navigation. The README recommends disabling automatic rearrangement of Spaces.
  • Custom JavaScript layouts are marked beta.
  • Tiling changes how windows are positioned, so users who rely on freely overlapping windows may need to use the Floating layout or another workflow.

Found this useful?

Share it with someone who would like Amethyst.

Comparisons