import XMonad import XMonad.Hooks.DynamicLog import XMonad.Hooks.ManageDocks import XMonad.Hooks.UrgencyHook import XMonad.Util.Run (spawnPipe) import XMonad.Actions.CycleWS import System.Exit import System.IO import qualified XMonad.StackSet as W import qualified Data.Map as M myKeys conf@(XConfig {XMonad.modMask = modMask}) = M.fromList $ [ ((modMask, xK_Return), spawn $ XMonad.terminal conf) , ((modMask, xK_q ), spawn "exe=`dmenu_path | dmenu` && eval \"exec $exe\"") , ((modMask, xK_l ), spawn "slock") , ((modMask .|. shiftMask, xK_c ), kill) , ((modMask, xK_space ), sendMessage NextLayout) , ((modMask .|. shiftMask, xK_space ), setLayout $ XMonad.layoutHook conf) , ((modMask, xK_r ), windows W.focusDown) , ((modMask, xK_g ), windows W.focusUp ) , ((modMask, xK_m ), windows W.focusMaster ) , ((modMask .|. shiftMask, xK_r ), windows W.swapDown ) , ((modMask .|. shiftMask, xK_g ), windows W.swapUp ) , ((modMask, xK_h ), prevWS) , ((modMask, xK_f ), nextWS) , ((modMask .|. shiftMask, xK_q ), io (exitWith ExitSuccess)) --, ((modMask, xK_h ), withFocused $ windows . W.sink) --, ((modMask , xK_h ), sendMessage (IncMasterN 1)) --, ((modMask , xK_f ), sendMessage (IncMasterN (-1))) ] ++ [((m .|. modMask, k), windows $ f i) | (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9] , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]] myMouseBindings (XConfig {XMonad.modMask = modMask}) = M.fromList $ [ ((modMask, button1), (\w -> focus w >> mouseMoveWindow w)) , ((modMask, button2), (\w -> focus w >> windows W.swapMaster)) , ((modMask, button3), (\w -> focus w >> mouseResizeWindow w)) ] myManageHook = composeAll [ className =? "MPlayer" --> doFloat , className =? "Gimp" --> doFloat ] myFocusFollowsMouse :: Bool myFocusFollowsMouse = True myConfig = defaultConfig main = do xmproc <- spawnPipe "xmobar" xmonad $ withUrgencyHook NoUrgencyHook defaultConfig { manageHook = manageDocks <+> manageHook defaultConfig, layoutHook = avoidStruts $ layoutHook defaultConfig, terminal = "x-terminal-emulator", focusFollowsMouse = myFocusFollowsMouse, borderWidth = 1, modMask = mod1Mask, numlockMask = mod2Mask, workspaces = ["1","2","3","4","5","6","7","8","9"], normalBorderColor = "#dddddd", focusedBorderColor = "#ff0000", keys = myKeys, mouseBindings = myMouseBindings, logHook = dynamicLogWithPP $ xmobarPP { ppOutput = hPutStrLn xmproc , ppTitle = xmobarColor "green" "" . shorten 50 , ppUrgent = xmobarColor "yellow" "red" . shorten 50 }, startupHook = return() }