update vimrc & xmonad
[dotfiles.git] / .xmonad / xmonad.hs
1 import XMonad
2 import XMonad.Actions.SpawnOn
3 import XMonad.Hooks.DynamicLog
4 import XMonad.Hooks.ManageDocks
5 import XMonad.Util.Run
6 import XMonad.Util.EZConfig(additionalKeys)
7 import XMonad.Util.WorkspaceCompare
8 import XMonad.Layout.PerWorkspace
9 import XMonad.Layout.Spacing
10 import XMonad.Layout.ThreeColumns
11 import XMonad.Layout.Spiral
12 import XMonad.Layout.NoBorders
13 --import XMonad.Layout.Fullscreen
14 import Data.Ratio
15 import System.IO
16
17 threeColLayout = ThreeCol 2 (3/100) (1/2)
18 tallLayout = Tall 1 (5/100) (2/3)
19 spiralLayout = spiral (1 % 1)
20
21 mLayout = spacing 0
22 $ tallLayout
23 ||| threeColLayout
24 ||| spiralLayout
25 ||| noBorders Full
26
27 mStartupHook :: X ()
28 mStartupHook = do
29 spawnOn "term" "kremterm"
30 spawnOn "term" "kremterm"
31 spawnOn "term" "kremterm"
32 spawnOn "term" "kremterm"
33 spawnOn "term" "kremterm"
34 spawnOn "term" "kremterm"
35 spawnOn "term" "kremterm"
36
37 spawnOn "www" "google-chrome-stable"
38
39 spawnOn "chat" "skype"
40 spawnOn "chat" "kremirc"
41
42 spawnOn "music" "spotify"
43 spawnOn "music" "kremcmus"
44
45 spawnOn "game" "steam"
46
47 mManageHook = composeAll
48 [ appName =? "kremterm" --> doShift "term"
49 , appName =? "google-chrome-stable" --> doShift "www"
50 , appName =? "firefox" --> doShift "www"
51 , appName =? "kremirc" --> doShift "chat"
52 , appName =? "skype" --> doShift "chat"
53 , appName =? "spotify" --> doShift "music"
54 , appName =? "kremcmus" --> doShift "music"
55 , appName =? "thunderbird" --> doShift "mail"
56 , appName =? "Steam" --> doShift "game"
57 , className =? "Steam" --> doShift "game"
58 , appName =? "steam" --> doShift "game"
59 , className =? "steam" --> doShift "game"
60 , appName =? "steam.sh" --> doShift "game"
61 , className =? "steam.sh" --> doShift "game"
62 ]
63
64 mWorkspaces = ["mon", "term", "www", "chat", "music", "mail", "game", "code", "extra"]
65 -- 1 2 3 4 5 6 7 8 9
66
67 main = do
68 xmproc <- spawnPipe "xmobar"
69 xmonad $ defaultConfig
70 { manageHook = mManageHook <+> manageDocks
71 , layoutHook = avoidStruts $ mLayout
72 , startupHook = mStartupHook
73 , logHook = dynamicLogWithPP xmobarPP
74 { ppOutput = hPutStrLn xmproc
75 , ppCurrent = xmobarColor "#70a16c" "" . wrap "[" "]"
76 , ppTitle = xmobarColor "#70a16c" "" . shorten 40
77 , ppVisible = wrap "(" ")"
78 , ppWsSep = " <fc=#af652f>|</fc> "
79 , ppUrgent = xmobarColor "#af652f" ""
80 , ppHidden = xmobarColor "#746c48" ""
81 , ppHiddenNoWindows = xmobarColor "#746c48" ""
82 , ppOrder = \(ws:_:t:_) -> [ws,t]
83 }
84 , workspaces = mWorkspaces
85 , modMask = mod4Mask
86 , normalBorderColor = "#170f0d"
87 , focusedBorderColor = "#746c48"
88 , borderWidth = 2
89 , terminal = "urxvtc"
90 }