import XMonad import XMonad.Layouts import XMonad.Operations import XMonad.ManageHook import qualified XMonad.StackSet as W import Data.Bits ((.|.)) import qualified Data.Map as M import System.Exit import Graphics.X11.Xlib import XMonad.Hooks.DynamicLog main = xmonad $ defaultConfig { workspaces = myWorkspaces, modMask = mod4Mask, defaultGaps = [(13,0,0,0)], logHook = dynamicLog, terminal = "urxvtc", manageHook = myManageHook, keys = \c -> myKeys c `M.union` keys defaultConfig c } where myWorkspaces = ["1", "web", "mp3"] ++ map show [4 .. 8 :: Int] ++ ["im"] myKeys (XConfig {modMask = modm}) = M.fromList $ [((modm, xK_p ), spawn "exe=`dmenu_path | dmenu -fn -*-fixed-*-r-*-*-10` && eval \"exec $exe\"")] myManageHook = composeAll . concat $ [ [ className =? c --> doFloat | c <- floats] , [ resource =? r --> doIgnore | r <- ignore] , [ className =? "Firefox-bin" --> doF (W.shift "web") ] , [ resource =? "pidgin" --> doF (W.shift "im") ] , [ resource =? "Eclipse" --> doF (W.shift "4") ] , [ resource =? "eclipse" --> doF (W.shift "4") ] ] where floats = ["MPlayer", "Gimp", "Dia"] ignore = ["gnome-panel", "desktop_window", "kicker", "kdesktop", "panel"]