| 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 | } |