Amethyst

A tiling window manager for OS X

Overview

Build Status

Tiling window manager for OS X similar to xmonad. Was originally written as an alternative to fjolnir’s awesome xnomad but written in pure Objective-C. It’s expanded to include some more features like Spaces support not reliant on fragile private APIs.

Screenshot

A quick screencast of basic functionality can be found here. (It’s rough, and I’d love to see a better one if someone has the skills and inclination to make one.)

Credits

Credit goes to fjolnir for the bulk of the initial logic and structure.

Getting Amethyst

Amethyst is available for direct download here or using homebrew cask.

1
brew cask install amethyst

Note: that Amethyst now is only supported on OS X 10.9. The last version that supports 10.8 can be found here.

Building

  1. Install the latest version of Xcode
  2. Clone the project, then cd to the Amethyst directory.
  3. Install xctool
    • brew update && brew install xctool
    • you may need to accept all XCode licenses, e.g. sudo xcodebuild -license
  4. Install cocoapods
    • gem install cocoapods
    • you may need to exec zsh or similar for this command to be found, if using rbenv.
  5. rake install
  6. cp Amethyst/default.amethyst ~/.amethyst

Contributing

If you’d like to contribute please branch off of the development branch. Otherwise just try to stick to the general style of the code.

Contact

If you have questions or feedback you can email me or drop by #amethyst on Freenode.

Using Amethyst

Amethyst must be given permissions to use the accessibility APIs under the Privacy tab of the Security & Privacy preferences pane as shown below.

Accessibility permissions

Keyboard Shortcuts

Amethyst uses two modifier combinations.

And defines the following commands, mostly a mapping to xmonad key combinations.

Setting Up Spaces Support

Spaces are, unfortunately, not supported right out of the box. To enable it you must activate Mission Control’s keyboard shortcuts for switching to specific Desktops, as Mac OS X calls them. This option is in the Keyboard Shortcuts tab of the Keyboard preferences pane. The shortcuts will be of the form ctrl + [n]. Amethyst is only able to send a window to the nth space if the shortcut ctrl + n is enabled.

Mission Control keyboard shortcuts

Customization

Amethyst can be customized by creating a json file called .amethyst in your home directory. The structure and valid keys and whatnot are all defined in default.amethyst.

Layouts

You can set the layouts you want to use by supplying a list of layout names under the “layouts” key. For example,

1
2
3
4
"layouts": [
    "tall",
    "fullscreen",
],

will restrict your layouts to the tall and fullscreen layouts. The available layouts are as follows:

Mouse Follows Focus

This setting can be enabled by changing the following line

1
"mouse-follows-focus": false,

to

1
"mouse-follows-focus": true,

in your .amethyst file.

Always float an app

You can set specific application to float by default, this can still be toggled by mod1-t

1
2
3
"floating": [
    "com.apple.systempreferences"
],

Get the required string for the app osascript -e 'id of app "Finder"'. Just replace Finder with the name of your app

Layout HUD

By default Amethyst pops up a HUD telling you the layout whenever the layout changes. You can disable it in your .amethyst file using the enables-layout-hud key. i.e.,

1
"enables-layout-hud": false

By default the HUD will show when changing to a different space. You can disable the HUD during space changes, while still having it enabled when cycling or selecting a different layout, by using the enables-layout-hud-on-space-change key. i.e.,

1
"enables-layout-hud-on-space-change": false

Copyright © 2014 - Ian Ynda-Hummel Powered by Octopress - Theme by mattgraham