import Data.Monoid import XMonad import qualified XMonad.StackSet as W import XMonad.Util.Cursor import XMonad.Util.EZConfig import XMonad.Actions.CycleWS import XMonad.Actions.Warp import XMonad.Hooks.DynamicLog import XMonad.Hooks.SetWMName import XMonad.Hooks.ManageDocks import XMonad.Hooks.ManageHelpers import XMonad.Layout.Accordion import XMonad.Layout.NoBorders import XMonad.Layout.Simplest main = do xmonad $ defaultConfig { keys = myKeys , modMask = mod4Mask , workspaces = myWorkspaces , focusFollowsMouse = False , borderWidth = 2 , normalBorderColor = "#202020" , focusedBorderColor = "#808080" , layoutHook = myLayout , logHook = myLogHook , manageHook = myManageHook , startupHook = myStartupHook , handleEventHook = myEventHook } myWorkspaces = map show [1..9] myLogHook = dynamicLogString defaultPP >>= xmonadPropLog myLayout = (myTall ||| myMTall ||| mySimplest ||| myAccordion) where myTall = avoidStruts $ Tall 1 0.1 0.5 myMTall = avoidStruts $ Mirror $ Tall 1 0.1 0.5 myAccordion = avoidStruts $ noBorders $ Accordion mySimplest = noBorders Simplest myKeys = \c -> mkKeymap c $ [ ("M-w p", windows $ W.focusUp) , ("M-w n", windows $ W.focusDown) , ("M-w m", windows $ W.focusMaster) , ("M-w S-p", windows $ W.swapUp) , ("M-w S-n", windows $ W.swapDown) , ("M-w S-m", windows $ W.swapMaster) , ("M-w s", withFocused $ windows . W.sink) , ("M-w c", kill) , ("M-w ", shiftTo Next EmptyWS) , ("M-w ", shiftNextScreen) , ("M- e", moveTo Next EmptyWS) , ("M- p", moveTo Prev HiddenNonEmptyWS) , ("M- n", moveTo Next HiddenNonEmptyWS) , ("M- t", toggleWS) , ("M- ", nextScreen) , ("M- ", swapNextScreen) , ("M-", sendMessage NextLayout) , ("M-b c", warpToWindow 0.5 0.5) ] myEventHook = mempty myManageHook = composeOne $ concat [ [ transience ] , [ appName =? x -?> doIgnore | x <- myIgnore ] , [ appName =? x -?> doCenterFloat | x <- myFloat ] , [ isDialog -?> doCenterFloat ] ] where myFloat = ["Dialog"] myIgnore = ["Conky"] myStartupHook = do setDefaultCursor xC_plus