import System.IO import System.Posix.Env (putEnv) import XMonad import XMonad.Actions.CycleWS import XMonad.Actions.CycleWindows import XMonad.Hooks.SetWMName import XMonad.Hooks.DynamicLog import XMonad.Hooks.ManageDocks import XMonad.Layout.LimitWindows import XMonad.Layout.MultiColumns import XMonad.Layout.Tabbed import XMonad.Util.EZConfig import XMonad.Util.Loggers import XMonad.Util.Run(spawnPipe) xmoblog proc = dynamicLogWithPP xmobarPP { ppOutput = hPutStrLn proc , ppTitle = xmobarColor "green" "" . shorten 50 , ppExtras = [logCmd "sleep .1 && volume"] } main = do putEnv "_JAVA_AWT_WM_NONREPARENTING=1" -- java GUIs; see https://code.google.com/p/xmonad/issues/detail?id=559#c11 xmproc <- spawnPipe "xmobar" xmonad $ defaultConfig { modMask = mod4Mask , focusFollowsMouse = False , layoutHook = avoidStruts $ myLayouts , logHook = xmoblog xmproc , manageHook = manageDocks <+> manageHook defaultConfig , terminal = "uxterm" , borderWidth = 1 } `additionalKeysP` (myKeys xmproc) myKeys xmproc = [ ("M-", spawn "xbacklight -dec 5 -time 80") , ("M-", spawn "xbacklight -inc 5 -time 80") , ("", spawn "amixer sset 'Master' toggle" >> xmoblog xmproc) , ("", spawn "amixer sset 'Master' 1%+" >> xmoblog xmproc) , ("", spawn "amixer sset 'Master' 1%-" >> xmoblog xmproc) , ("", spawn "sudo pm-suspend") , ("", spawn "sudo -A ./bin/kbdbacklight up") , ("", spawn "sudo -A ./bin/kbdbacklight down") , ("M-", nextWS) , ("M-", prevWS) , ("M-S-p", spawn "passmenu -i") , ("M-v", spawn "uxterm -e vim") , ("M-m", spawn "uxterm -e cmus") , ("M--", decreaseLimit) , ("M-=", increaseLimit) ] myLayouts = limitWindows 3 $ Tall 1 0.01 0.5 ||| multiCol [1,1,0] 4 0.01 0.4 ||| simpleTabbed