Amethyst on a Mac: tiling windows the way a keyboard user wants

Someone arriving at Amethyst has usually come from a Linux desktop or has watched a video of one. Windows arrange themselves, nothing overlaps, and the mouse never enters the story. On macOS that behaviour is not native, and Amethyst is the best known attempt to add it. It is free, it is open source, and it will change how a Mac feels within about ten minutes of being granted permission.

That last part is the honest warning. Automatic tiling is not a feature that gets switched on and forgotten. It is a different set of habits, and the first hour decides whether it sticks.

What automatic tiling actually means here

The distinction that matters is between snapping and tiling. A snapping tool waits to be asked and then moves one window. A tiling window manager owns the whole screen: open a window and the existing ones shrink to make room, close one and the rest expand to fill the gap. The project describes itself as a tiling window manager for macOS along the lines of xmonad, and that lineage explains both the key bindings and the mindset.

The consequence people do not anticipate is that windows stop having positions. There is no "put this over there", because there is no there. A window has a place in a layout, and the way to change what it looks like is to change the layout or to move the window's position within it. Learning to think that way is the actual installation cost.

Distribution is simple and there is no purchase step. The project is available as a direct download from its releases page or through a Homebrew cask, brew install --cask amethyst, and the current release at the time of writing is v0.24.3, published in April 2026. The repository is Swift, carries an MIT licence, and has about 16,300 stars, which is a reasonable proxy for the odds that a problem encountered today has already been written up by somebody.

The vendor's own position on money is unusually direct:

Amethyst is free and always will be. Source: ianyh.com

Only macOS 10.15 and later are supported. That is a low floor compared with several commercial window tools, and it is one of the few reasons to reach for Amethyst on an older Mac even when automatic tiling was not the original goal.

The two settings to change before judging it

Both of these are documented by the project, and skipping either produces the impression that the app is broken.

The first is the accessibility permission. Amethyst has to be granted permission to use the accessibility APIs, under Privacy and Security in System Settings, and until that happens nothing moves at all. Every window manager on macOS shares this requirement, and a stale permission after a system update is the usual cause of a tool that silently stopped working.

The second is a macOS setting that fights with keyboard navigation, and the project flags it as important. "Automatically rearrange Spaces based on most recent use" is enabled by default under Mission Control, and it causes Spaces to swap places as they are used, which makes moving between them by keyboard unpredictable. The project recommends turning it off, and gives a command line equivalent for anyone who prefers that route:

You will probably want to disable Automatically rearrange Spaces based on most recent use (found under Mission Control in System Preferences). This setting is enabled by default, and will cause your Spaces to swap places based on use. Source: ianyh.com

A third adjustment is not a setting but a habit. Applications that genuinely need a free-floating window, a media player, a colour picker, a small utility panel, should be floated rather than tiled. There is a shortcut for toggling float on the focused window, and a global tiling toggle for the moments when the whole scheme is in the way. Using both early is what keeps the experiment from ending in frustration.

The default keys, and why they look like that

Amethyst defines two modifier combinations by default and allows two more to be configured. The defaults are worth reading before deciding whether they can be lived with.

Name Default combination
mod1 option + shift
mod2 ctrl + option + shift
mod3 not defined by default
mod4 not defined by default

On top of those, the command set is mostly a mapping of xmonad key combinations, which is why it will feel natural to one group of people and arbitrary to everyone else. The commands that carry the day are few. Cycling the layout forward is mod1 and space. Shrinking and expanding the main pane are mod1 with h and l. Moving focus around the layout uses mod1 with j and k. Swapping the focused window with the main window is mod1 and enter, which is the single most used command in practice, because the main pane is where the work happens and everything else is context.

Beyond that, focus and windows can be thrown to specific screens and to numbered Spaces, layouts can be selected directly rather than cycled, and there is a command to force windows to be reevaluated when something has drifted out of place. Individual layouts can be enabled or disabled so that the cycle only contains the two or three that are actually wanted, which is the configuration step that makes layout cycling usable rather than a lottery.

Configuration goes further than the settings window. Amethyst reads a YAML configuration file from the home directory, and custom layouts can be implemented in JavaScript, described by the project as a beta feature. For most people the settings window is enough, but the file matters for anyone who wants the same setup reproduced on a second machine.

The layouts, grouped by what they are for

There are more layouts than anyone needs, and the useful move is to pick two and disable the rest. Grouped by purpose, the set is:

One main pane plus the rest. Tall puts the main pane on the left with everything else stacked on the right, and it is the default. Tall-Right mirrors it. Wide rotates it so the main pane is on top and the others split into columns below. Widescreen-Tall behaves like Tall but splits the main pane into columns rather than rows when it holds several windows.

Three columns. 3Column-Left, 3Column-Middle and 3Column-Right place the main pane on the left, in the middle or on the right, with the remaining windows distributed as evenly as possible between the other two panes. On a wide monitor these are usually the reason to keep the layout cycle at all.

Even splits. Column gives every window a full-height column, Row gives every window a full-width row, and neither has a privileged main window beyond the leftmost or topmost one being the resizable pane.

One at a time. Fullscreen gives the focused window the whole screen and hides the others, which is closer to how most Mac users already work and makes a surprisingly good default for a laptop screen. Two Pane keeps one pinned main window and shows one of the remaining windows at a time, swapped by shortcut, and it adapts to horizontal or vertical tiling based on screen orientation.

Recursive. Binary Space Partitioning has no main pane. Each new window splits whichever pane it lands in along its longer axis, recursively, which produces the dense arrangements people recognise from Linux tiling setups.

Floating. All windows behave as though the manager were switched off, including overlapping each other.

How it compares with what macOS already does

Current macOS tiles windows on its own, which changes what Amethyst is actually being installed for. Apple documents dragging a window to an edge or a corner, holding Option while dragging toward a highlighted area, layout menus under the green button, options in the Window menu, and keyboard shortcuts.

You can tile a window by dragging it to an edge of the screen, left, right, or any corner, or to the menu bar at the top of the screen. Source: support.apple.com

So the built-in layer covers placement on request. What it does not do is rearrange anything by itself, and that gap is the whole reason this category exists.

Capability Built into macOS Amethyst
Place a window on request Yes Yes
Rearrange automatically as windows open and close No Yes
Layouts with a resizable main pane No Yes, several
Keyboard-only operation Partial, fixed shortcuts Yes, remappable modifiers
Configuration in a file No YAML in the home directory
Custom layouts in code No JavaScript, described as beta
Cost Included Free, MIT licence

Read the middle row as the deciding one. Someone who wants windows placed neatly when asked is already equipped and should install nothing. Someone who wants to stop asking, so that the screen simply never has overlapping windows on it, is looking at a genuinely different behaviour, and the free option is also the most configurable one.

Who this is wrong for

Worth saying plainly, because the enthusiasm around tiling window managers tends to skip it.

Automatic tiling suits work where every window is a native application with real content in it: an editor, a terminal, a document, a log. It suits people who already navigate by keyboard and who will spend an evening on configuration for a habit that lasts years.

It suits far less well a day spent inside web applications. Tiling six browser windows produces six small browser windows, each still holding its own pile of tabs, and no layout engine can tell the mail tab from the calendar tab. The shape of the screen becomes orderly while the actual problem, which is finding things and staying signed in to the right account, is untouched. When most of the day happens in the browser, the change that pays is giving each web application its own contained window and its own session, which is what isolated workspaces are for, and keeping their alerts in one place instead of six, which is a separate feature set.

The other poor fit is a working style built on Spaces. Amethyst can throw windows to numbered Spaces, but its layouts operate on the active screen, and a scheme that depends on remembering which of eight desktops holds which project is fighting the tool rather than using it.

What to change first

Install it, grant the accessibility permission, turn off the automatic rearranging of Spaces, then disable every layout except Tall and Fullscreen and live with just those for a week. Float the two or three applications that need to be left alone. If the windows being tiled turn out to be mostly browser windows and second logins, the shape of the screen is not the bottleneck, and a browser that keeps each web app in its own window is the change worth making, which is what SpaceDeck is built for.

Frequently asked questions

Is Amethyst free, and how is it installed?

Yes. The project states that Amethyst is free and always will be, and the code is published under an MIT licence. It can be installed as a direct download from the releases page or with the Homebrew cask, brew install --cask amethyst. The latest release at the time of writing is v0.24.3, published in April 2026.

Why is Amethyst not moving any windows?

Almost always the accessibility permission. Amethyst must be granted permission to use the accessibility APIs under Privacy and Security in System Settings before it can move anything, and the grant sometimes has to be given again after a macOS update. Removing the entry and adding it back is the usual repair.

Which macOS versions are supported?

The project states that Amethyst is only supported on macOS 10.15 and later. That is a lower floor than several commercial window tools, which makes it one of the workable options on a Mac that no longer receives new macOS releases.

Why does moving between Spaces by keyboard behave unpredictably?

Because macOS is reordering the Spaces. The setting "Automatically rearrange Spaces based on most recent use", found under Mission Control, is on by default and makes Spaces swap places as they are used. The project recommends turning it off, and the same change can be made from the command line with a defaults write against the Dock.

Can a window be kept out of the tiling?

Yes, in two ways. There is a shortcut to toggle float for the focused window, which leaves that one window free while everything else stays tiled, and a separate shortcut toggles tiling globally when the whole scheme is temporarily in the way. Floating the handful of utility windows that need it is the normal way to make automatic tiling liveable.

Back to all posts