Slate: an XMonad like windowmanager for Mac OS

For work I recently switched to using Mac OS (MacBook Pro 15” retina), until then I had been using Linux. The switch was rather painless, as a lot of the unix goodness (terminal!) is also present on the Mac. One thing that I was missing from my Linux days is XMonad. XMonad is a tiled window manager, which is very lightweight and heavily depends on shortcuts. But then a colleague suggested I take a look at Slate. Slate has a lot of the functionality and configurability of XMonad, and is a very nice addition to my already shortcut centered way of working on my MacBook.

Slate allows you to:

  • Attach keystrokes to how you want to manage your windows: e.g. resizing, moving around the screen, shifting focus between apps.
  • Create app layouts, e.g. Google Chrome full screen, Mail Client on my 2nd screen maximized to the left half of the screen, Terminal maximized to the right half of the screen, and being able to quickly switch between them. It also allows you to create layouts for 1 and 2 monitor setups, and switches between them automatically.
  • Windows Hints, press a button and all the apps are marked by a letter. Pushing that letter shifts focus to that app.
  • An alternative app switcher.

Configuring Slate is done using a .slate file in your homedirectory, and can be a bit daunting. But if you are used to working with .bash_profile‘s and such, you’ll feel right at home. I’ve only just starting to work with Slate, but you can have a look at my config file at the bottom of this post. A nice introductory blog post for Slate has been written by Tristan Hume.

One issue for me right now is that Slate does not work well with Mission Control (multiple workspaces). The features I use in the config file below work fine, but for example the layout’s aren’t able to use multiple workspaces. This is a known issue, and progress in this direction is hampered by the lack of API support from apple.

Tagged with: ,
Posted in MacBook

Leave a Reply

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    Markdown is turned off in code blocks:
     [This is not a link](

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see