import XMonad import XMonad.Config.Desktop import XMonad.Config.Gnome import XMonad.Actions.CycleWS import XMonad.Actions.NoBorders import XMonad.Hooks.ManageDocks import XMonad.Hooks.ManageHelpers import XMonad.Layout.ResizableTile import qualified XMonad.StackSet as W import XMonad.Util.EZConfig import Control.Monad import Control.Monad.Trans import Data.Monoid import ConfigurableBorders import FullscreenManager import NoBorders myModMask = mod4Mask main = xmonad $ gnomeConfig { modMask = myModMask , manageHook = myManageHook , layoutHook = desktopLayoutModifiers myLayoutHook , startupHook = myStartupHook , handleEventHook = myEventHook } `additionalKeysP` [ ("M-a", sendMessage MirrorShrink) , ("M-y", sendMessage MirrorExpand) , ("M-", prevWS) , ("M-", nextWS) , ("M-S-", shiftToPrev) , ("M-S-", shiftToNext) , ("M-S-b", withFocused toggleBorder >> refresh) , ("M1-", kill) ] `additionalMouseBindings` [ ((myModMask, button4), \_ -> sendMessage Shrink) , ((myModMask, button5), \_ -> sendMessage Expand) , ((myModMask .|. shiftMask, button4), \_ -> sendMessage MirrorExpand) , ((myModMask .|. shiftMask, button5), \_ -> sendMessage MirrorShrink) ] myStartupHook :: X () myStartupHook = do startupHook gnomeConfig spawn "killall -u `id -un` -q xcompmgr; exec xcompmgr" myManageHook :: ManageHook myManageHook = composeAll [ composeOne [ className =? "Guake.py" -?> (doFloatMaybeFullscreen <+> doConfigBorderOff) , className =? "Do" -?> (doFloat <+> doConfigBorderOff) , className =? "MPlayer" -?> doCenterFloat , className =? "Gimp" -?> doFloat , className =? "Gajim.py" -?> doFloat , isFullscreen -?> doFullscreen ] , manageHook gnomeConfig ] myLayoutHook = manageFullscreen $ configureBorders $ smartBorders (tiled ||| Mirror tiled ||| Full) where -- default tiling algorithm partitions the screen into two panes tiled = ResizableTall nmaster delta ratio [] -- The default number of windows in the master pane nmaster = 1 -- Default proportion of screen occupied by master pane ratio = 3/5 -- Percent of screen to increment by when resizing panes delta = 3/100 myEventHook :: Event -> X All myEventHook ev = do handleFullscreen ev (handleEventHook gnomeConfig) ev