Slate: a Mac OS X window manager for power users

Well, as I already stated, even though I’m quite a newbie when it comes to Linux, it doesn’t mean that I’m not curious about some products developed for it. And one that I’ve been curious since the moment that I first read about was XMONAD.

XMONAD is a keyboard-based automated window manager developed in Haskell. It basically places the windows that you open in a tiled environment, exempting you (Entirely or mostly, depends on how picky and demanding you are) from the task of resizing and organizing them. Also, you keep its configurations in a config file, just like bashrc or vimrc, which is always good. Well, when you see it in action, you’ll agree on how awesome this thing is.

So. Fast.

Nevertheless, I’m a Mac OS user, and using XMONAD on it is not as seamless and practical as it is on Linux. So, of course I had to find something equivalent. Enter Slate.

Slate: my new window manager

Slate is a Mac OS X window manager made for those who are tired of fiddling around with the mouse when it comes to resizing, focusing and arranging programs. With Slate, all comes down to the keyboard: just customize the dotfile with the hotkeys of your liking and you are good to go. If you are a software developer, you know how important it is to maximize the time you spend on the keyboard (Even more if you use vim or emacs), and that’s one of the main reasons for me to adopt it.

Basically, Slate allows you to perform the following actions through keyboard hotkeys:

  • Move and/or resize windows;
  • Directionally focus windows;
  • Activate preset layouts;
  • Create, delete, and activate snapshots of the current state of windows
An example on how my windows are arranged usually.

An example on how my windows are arranged usually.

Configuring Slate’s dotfile: the basics

As I stated before, Slate is configured through a dotfile called .slate that is placed in the home directory. And, to make it even more clear how Slate is configured, I’ll strip down my .slate as we dive into each concept (or, if you want to check it out by yourself, just check it at Github).

Slate’s readme says that you can configure it using the following directives:

  • config-: For global configurations;
  • alias-: To create alias variables;
  • layout-: To configure layouts. Even though I don’t use layouts yet, I’ll put an example on how to configure it;
  • default-: To default certain layouts or snapshots to certain screen configurations;
  • bind-: For key bindings. It’s the one I use most. I’ll narrow down to the location bindings along with an example of each of the main cases I use;
  • source- To load configurations from another file.
How my location hotkeys could be pictured.

How my location hotkeys could be pictured.

And there’s more…

There are even more things that Slate allows you to do. For example, I only mentioned about snapshots, that allows you to save your current window layout and restore it whenever you want. There’s also the possibility of Slate being more “GUI-friendly”, as there are configurations for showing icon overlays to help focus changing or grids for visual aid when resizing windows.

So, if you’re on a Mac and feel adventurous, have a try. I used to use Moom to place and resize my windows, but Slate does the job much more seamlessly, and it’s a keeper for me.