0
|
1 |
-- Import statements
|
|
2 |
import XMonad
|
|
3 |
-- import XMonad.Config.Gnome
|
|
4 |
import XMonad.Hooks.DynamicLog
|
|
5 |
import XMonad.Hooks.ManageDocks
|
|
6 |
import XMonad.Hooks.EwmhDesktops
|
|
7 |
import XMonad.Hooks.Place
|
|
8 |
import XMonad.Hooks.FadeInactive
|
|
9 |
import XMonad.Hooks.UrgencyHook
|
|
10 |
import XMonad.Config.Gnome
|
|
11 |
import XMonad.Util.Run
|
|
12 |
import XMonad.Util.EZConfig
|
|
13 |
import XMonad.Actions.CycleWS
|
|
14 |
import XMonad.Actions.Promote
|
|
15 |
import XMonad.Actions.RotSlaves
|
|
16 |
import qualified XMonad.StackSet as S
|
|
17 |
import System.IO
|
|
18 |
import XMonad.Layout.NoBorders
|
|
19 |
import XMonad.Layout.Tabbed
|
|
20 |
import XMonad.Layout.Spiral
|
|
21 |
import XMonad.Layout.MosaicAlt
|
|
22 |
import XMonad.Layout.ThreeColumns
|
|
23 |
import qualified Data.Map as M
|
|
24 |
import System.Exit
|
|
25 |
|
|
26 |
-- defines
|
|
27 |
|
|
28 |
myModMask = mod4Mask -- Windows key
|
|
29 |
myTerminal = "x-terminal-emulator"
|
|
30 |
myWorkspaces = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"]
|
|
31 |
upperRowKeys = [ xK_quotedbl,
|
|
32 |
xK_guillemotleft,
|
|
33 |
xK_guillemotright,
|
|
34 |
xK_parenleft,
|
|
35 |
xK_parenright,
|
|
36 |
xK_at,
|
|
37 |
xK_plus,
|
|
38 |
xK_minus,
|
|
39 |
xK_slash,
|
|
40 |
xK_asterisk ]
|
|
41 |
numberOfWS = 4
|
|
42 |
|
|
43 |
myWSKeys = [ ((m .|. myModMask, k), windows $ f i)
|
|
44 |
| (i, k) <- take numberOfWS (zip myWorkspaces upperRowKeys),
|
|
45 |
(f, m) <- [(S.greedyView, 0), (S.shift, shiftMask)]]
|
|
46 |
|
|
47 |
-- X Y W H
|
|
48 |
myDefaultDialogSize = S.RationalRect (1/4) (1/4) (1/2) (1/2)
|
|
49 |
|
|
50 |
myKeys = [
|
|
51 |
((myModMask .|. shiftMask, xK_Return ), spawn $ myTerminal),
|
|
52 |
((myModMask, xK_m ), windows S.focusMaster ),
|
|
53 |
((myModMask .|. shiftMask, xK_m ), promote ),
|
|
54 |
((myModMask .|. shiftMask, xK_Tab ), rotAllUp ),
|
|
55 |
((myModMask , xK_space ), sendMessage NextLayout),
|
|
56 |
((myModMask, xK_q ), kill),
|
|
57 |
((myModMask .|. shiftMask, xK_q ), io (exitWith ExitSuccess)),
|
|
58 |
((myModMask .|. shiftMask, xK_r ), spawn "xmonad --recompile && xmonad --restart"),
|
|
59 |
(( 0, xK_Print ), spawn "gnome-screenshot -i"),
|
|
60 |
((myModMask, xK_b ), sendMessage ToggleStruts),
|
|
61 |
-- S.
|
|
62 |
((myModMask, xK_d ), withFocused $ windows . (`S.float` myDefaultDialogSize)),
|
|
63 |
((myModMask .|. shiftMask, xK_d ), withFocused $ windows . S.sink),
|
|
64 |
-- ((myModMask .|. shiftMask, xK_b ), sendMessage (SetStruts [D] [])),
|
|
65 |
|
|
66 |
-- Vi-like bindings for modifying layout
|
|
67 |
((myModMask, xK_t ), windows S.focusDown ),
|
|
68 |
((myModMask, xK_s ), windows S.focusUp ),
|
|
69 |
((myModMask .|. shiftMask , xK_t ), windows S.swapDown ),
|
|
70 |
((myModMask .|. shiftMask , xK_s ), windows S.swapUp ),
|
|
71 |
((myModMask .|. controlMask, xK_t ), sendMessage Shrink ),
|
|
72 |
((myModMask .|. controlMask, xK_s ), sendMessage Expand ),
|
|
73 |
((myModMask .|. shiftMask , xK_n ), sendMessage (IncMasterN (1))),
|
|
74 |
((myModMask , xK_n ), sendMessage (IncMasterN (-1)))
|
|
75 |
] ++ myWSKeys
|
|
76 |
|
|
77 |
|
|
78 |
fib :: Int -> Int
|
|
79 |
fib 0 = 0
|
|
80 |
fib 1 = 1
|
|
81 |
fib n = fib (n-1) + fib (n-2)
|
|
82 |
|
|
83 |
golden :: Int -> Rational
|
|
84 |
golden n = toRational (fib n) / toRational (fib (n-1))
|
|
85 |
|
|
86 |
myLayouts = tall ||| threeCol ||| Mirror tall ||| threeCol ||| mosaic ||| simpleTabbed ||| Full
|
|
87 |
where
|
|
88 |
mosaic = MosaicAlt M.empty
|
|
89 |
mySpiral = spiral ratio
|
|
90 |
tall = Tall nmaster delta ratio
|
|
91 |
threeCol = ThreeCol nmaster delta ratio
|
|
92 |
nmaster = 2
|
|
93 |
delta = 3/100
|
|
94 |
ratio = 2/3
|
|
95 |
|
|
96 |
fadingHook = fadeInactiveLogHook fadeAmount
|
|
97 |
where fadeAmount = 0.7
|
|
98 |
|
|
99 |
-- Run
|
|
100 |
main = do
|
|
101 |
xmproc <- spawnPipe "xmobar"
|
|
102 |
xmonad
|
|
103 |
$ withUrgencyHook dzenUrgencyHook { args = ["-bg", "darkgreen", "-xs", "1"] }
|
|
104 |
$ ewmh
|
|
105 |
$ gnomeConfig {
|
|
106 |
terminal = myTerminal,
|
|
107 |
borderWidth = 0,
|
|
108 |
focusFollowsMouse = False,
|
|
109 |
workspaces = take numberOfWS myWorkspaces,
|
|
110 |
manageHook = manageDocks <+>
|
|
111 |
placeHook (smart (0.5, 0.5)) <+>
|
|
112 |
manageHook defaultConfig,
|
|
113 |
layoutHook = avoidStruts $ myLayouts,
|
|
114 |
logHook = fadingHook >> dynamicLogWithPP xmobarPP {
|
|
115 |
ppOutput = hPutStrLn xmproc,
|
|
116 |
ppTitle = xmobarColor "green" "" . shorten 50
|
|
117 |
},
|
|
118 |
modMask = myModMask -- windows key
|
|
119 |
} `removeKeys` [
|
|
120 |
(myModMask, xK_Return)
|
|
121 |
] `additionalKeys` myKeys |