b7j0c.org


my xmonad.hs file

xmonad is a tiling window manager written in haskell.

import XMonad 
import qualified XMonad.StackSet as W
import qualified XMonad.Util.CustomKeys as C
import qualified Data.Map as M

main :: IO ()
main = xmonad $ defaultConfig
       { borderWidth        = 0
       , terminal           = "urxvt -bg black -fg white -vb +sb"
       , workspaces         = ["shell", "web"] ++ map show [3..9]
       , normalBorderColor  = "#000000"
       , focusedBorderColor = "#000000"
       , keys = C.customKeys delkeys inskeys
       , manageHook         = manageHook defaultConfig <+> myManageHook
       }
    where
      delkeys :: XConfig l -> [(KeyMask, KeySym)]
      delkeys XConfig {modMask = modm} =
          [ (modm, xK_b) ]
      
      inskeys :: XConfig l -> [((KeyMask, KeySym), X ())]
      inskeys conf@(XConfig {modMask = modm}) =
          let font = "Monospace"
              color = "-fg white -bg black"
              urxvt = "urxvt -vb +sb" in 
          [ 
           ((modm .|. shiftMask, xK_w), spawn "firefox"),
           ((modm .|. shiftMask, xK_c), spawn "/opt/conkeror/conkeror"),
           ((modm .|. shiftMask, xK_e), spawn 
            ("emacs --font \"" ++ font ++ "-14\" " ++ color)),
           ((modm .|. shiftMask, xK_u), spawn 
            (urxvt ++ " " ++ color ++ " -fn \"xft:" ++ font ++ 
             ":pixelsize=20\"")),
           ((modm .|. shiftMask, xK_l), spawn "xlock -mode blank")
          ]
      myManageHook :: ManageHook
      myManageHook = composeAll [
                      className =? w --> doF (W.shift "web") |
                                   w <- ["Firefox-bin", 
                                         "Firefox", 
                                         "Minefield"] 
                     ] 
      myLayout :: Choose (Mirror Tall) (Choose Tall Full) a
      myLayout =  Mirror (Tall 1 (3/100) (1/2)) ||| 
                  Tall 1 (3/100) (1/2)          ||| 
                  Full

last update 07/07/2008