xmonad on OS X Mavericks

I installed XQuartz today, and while looking around for a low-distraction window manager, I came across xmonad. It looked interesting, and I started following the installation instructions and found they were out of date. Here’s an updated set of instructions for installing xmonad.

  1. Install XQuartz.
  2. Install homebrew if you don’t already have it.
  3. brew update
  4. brew install ghc cabal-install wget
  5. cabal update
  6. export LIBRARY_PATH=/usr/local/lib:/usr/X11/lib
  7. cabal install xmonad
  8. Launch XQuartz and go to Preferences (command-,). Set the following:
    •  Output
      • Enable “Full-screen mode”
    •  Input
      • Enable “Emulate three button mouse”
      • Disable “Follow system keyboard layout”
      • Disable “Enable key equivalents under X11”
      • Enable “Option keys sent Alt_L and Alt_R”
    •  Pasteboard
      • Enable all of the options

monad has been installed in $HOME/.cabal/bin/xmonad. You now need to create an .xinitrc that will make XQuartz run monad. Edit ~/.xinitrc and add these lines:

[[ -f ~/.Xresources ]] && xrdb -load ~/.Xresources
xterm &

You can now launch XQuartz; nothing seems to happen, but press command-option-A and the xmonad  “desktop” (one huge xterm) will appear, covering the whole screen. Great! It’s using the default teeny and nasty xterm font, though. Let’s pretty it up a bit by making it use Monaco instead. Edit ~/.xresources and add these lines:

xterm*background: Black
xterm*foreground: White
xterm*termName: xterm-color
xterm*faceName: Monaco

Quit XQuartz with command-Q, and then relaunch, then hit command-option-A again to see the XQuartz desktop. The terminal should now be displaying in Monaco.

At this point, you should take a look at the guided tour and get familiar with xmonad. If you’re looking for a distraction-free working environment, this might be good for you. I’m going to give it a try and see how it works out.

This entry was posted in Programming and tagged , , , . Bookmark the permalink.

Leave a Reply