1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
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-<Left>", prevWS)
, ("M-<Right>", nextWS)
, ("M-S-<Left>", shiftToPrev)
, ("M-S-<Right>", shiftToNext)
, ("M-S-b", withFocused toggleBorder >> refresh)
, ("M1-<F4>", 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
|