Advertisement
Guest User

smeea

a guest
Dec 26th, 2008
277
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.52 KB | None | 0 0
  1. import XMonad.Actions.NoBorders
  2. import XMonad.Actions.WindowGo
  3. import XMonad hiding (Tall)
  4. import XMonad.Hooks.DynamicLog
  5. import XMonad.Hooks.ManageDocks
  6. import XMonad.Hooks.UrgencyHook
  7. import XMonad.Layout.HintedTile
  8. import XMonad.Layout.LayoutHints
  9. import XMonad.Layout.PerWorkspace
  10. import XMonad.Layout.NoBorders
  11. import XMonad.Layout.Spiral
  12. import XMonad.ManageHook
  13. import XMonad.Prompt
  14. import XMonad.Prompt.Shell
  15. import XMonad.Util.Run
  16.  
  17. import Graphics.X11
  18. import System.Exit
  19. import System.IO
  20.  
  21. import qualified Data.Map as M
  22. import qualified XMonad.Actions.FlexibleResize as Flex
  23. import qualified XMonad.StackSet as W
  24.  
  25. main = do
  26. din <- spawnPipe myStatusBar
  27. din2 <- spawnPipe myTopBar
  28. xmonad $ myUrgencyHook $ defaultConfig
  29.  
  30. { normalBorderColor = "#474751"
  31. , focusedBorderColor = "#9090a0"
  32. , terminal = "urxvt"
  33. , layoutHook = myLayout
  34. , manageHook = myManageHook <+> manageDocks <+> (doF avoidMaster)
  35. , workspaces = ["1:www", "2:code", "3:im", "4:misc"] ++ map show [5..9]
  36. , numlockMask = mod3Mask
  37. , modMask = mod1Mask
  38. , keys = myKeys
  39. , mouseBindings = myMouseBindings
  40. , borderWidth = 1
  41. , logHook = dynamicLogWithPP $ myDzenPP din
  42. , focusFollowsMouse = False
  43. }
  44.  
  45. avoidMaster :: W.StackSet i l a s sd -> W.StackSet i l a s sd
  46. avoidMaster = W.modify' $ \c -> case c of
  47. W.Stack t [] (r:rs) -> W.Stack t [r] rs
  48. otherwise -> c
  49.  
  50. myStatusBar = "dzen2 -x '0' -y '0' -h '16' -w '980' -ta 'l' -fg '#f3f3f3' -bg '#474751' -fn '-xos4-terminus-medium-r-normal-*-14-*-*-*-c-*-iso10646-1'"
  51. myTopBar = "zsh /home/smeea/.dzen/status.sh | dzen2 -x '980' -y '0' -h '16' -w '300' -ta 'r' -fg '#f3f3f3' -bg '#474751' -fn '-xos4-terminus-medium-r-normal-*-14-*-*-*-c-*-iso10646-1'"
  52.  
  53. myUrgencyHook = withUrgencyHook NoUrgencyHook
  54.  
  55. myLayout = avoidStruts $ layoutHints $ onWorkspace "1:www" (noBorders Full ||| HintedTile 1 (2/100) (5/6) TopLeft Wide) $ onWorkspace "2:code" (hintedTile Wide ||| hintedTile Tall) $ onWorkspace "3:im" (HintedTile 2 (2/100) (2/3) TopLeft Tall) $ (hintedTile Wide ||| hintedTile Tall ||| noBorders Full ||| spiral (5/6))
  56. where
  57. hintedTile = HintedTile nmaster delta ratio TopLeft
  58. nmaster = 1
  59. ratio = 3/4
  60. delta = 2/100
  61.  
  62. myXPConfig = defaultXPConfig
  63. { font = "-xos4-terminus-medium-r-normal-*-14-*-*-*-c-*-iso10646-1"
  64. , bgColor = "#404045"
  65. , fgColor = "#f3f3f3"
  66. , fgHLight = "#f3f3f3"
  67. , bgHLight = "#606065"
  68. , borderColor = "#f3f3f3"
  69. , promptBorderWidth = 0
  70. , position = Bottom
  71. , height = 14
  72. , historySize = 50
  73. }
  74.  
  75. myKeys conf@(XConfig {XMonad.modMask = modMask}) = M.fromList $
  76. [ ((mod4Mask, xK_a), spawn "urxvt")
  77. , ((mod4Mask, xK_n), raiseMaybe (runInTerm "-title ncmpcpp" "ncmpcpp") (title =? "ncmpcpp"))
  78. , ((mod4Mask, xK_j), raiseMaybe (runInTerm "-title mcabber" "mcabber") (title =? "mcabber"))
  79. , ((mod4Mask, xK_i), raiseMaybe (runInTerm "-title irssi" "irssi") (title =? "irssi"))
  80. , ((mod4Mask, xK_m), raiseMaybe (runInTerm "-title mutt" "mutt -y") (title =? "mutt"))
  81. , ((mod4Mask, xK_r), raiseMaybe (runInTerm "-title newsbeuter" "newsbeuter") (title =? "newsbeuter"))
  82. , ((mod4Mask, xK_w), runOrRaise "iceweasel" (className =? "Iceweasel"))
  83. , ((mod4Mask, xK_f), runOrRaise "pcmanfm" (className =? "Pcmanfm"))
  84. , ((mod4Mask, xK_e), runOrRaise "emacs" (className =? "Emacs"))
  85. , ((mod4Mask, xK_s), shellPrompt myXPConfig)
  86. , ((mod4Mask, xK_Print), spawn "scrot")
  87. , ((mod4Mask, xK_equal), spawn "amixer set PCM playback 5dB+")
  88. , ((mod4Mask, xK_minus), spawn "amixer set PCM playback 5dB-")
  89. , ((mod4Mask, xK_p), spawn "mpc toggle")
  90. , ((mod4Mask, xK_bracketright), spawn "mpc next")
  91. , ((mod4Mask, xK_bracketleft), spawn "mpc prev")
  92. , ((modMask, xK_f), sendMessage NextLayout)
  93. , ((modMask, xK_m), windows W.swapMaster)
  94. , ((modMask, xK_k), windows W.focusUp)
  95. , ((modMask, xK_j), windows W.focusDown)
  96. , ((modMask, xK_h), sendMessage Shrink)
  97. , ((modMask, xK_l), sendMessage Expand)
  98. , ((modMask .|. shiftMask, xK_q), io (exitWith ExitSuccess))
  99. , ((modMask .|. shiftMask, xK_r), spawn "killall conky dzen2" >> restart "xmonad" True)
  100. , ((modMask, xK_t), withFocused $ windows . W.sink)
  101. , ((modMask .|. shiftMask, xK_c), kill)
  102. , ((modMask .|. shiftMask, xK_k), windows W.swapUp)
  103. , ((modMask .|. shiftMask, xK_j), windows W.swapDown)
  104. , ((modMask .|. shiftMask, xK_h), sendMessage (IncMasterN 1))
  105. , ((modMask .|. shiftMask, xK_l), sendMessage (IncMasterN (-1)))
  106. , ((modMask, xK_b), withFocused toggleBorder)
  107. ]
  108. ++
  109. [ ((m .|. modMask, k), windows $ f i)
  110. | (i, k) <- zip (XMonad.workspaces conf) [xK_F1 .. xK_F9]
  111. , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]
  112. ]
  113.  
  114. myMouseBindings (XConfig {XMonad.modMask = modMask}) = M.fromList $
  115. [ ((modMask, button1), (\w -> focus w >> mouseMoveWindow w))
  116. , ((modMask, button2), (\w -> focus w >> windows W.swapMaster))
  117. , ((modMask, button3), (\w -> focus w >> Flex.mouseResizeWindow w))
  118. ]
  119.  
  120. myManageHook = composeAll . concat $
  121. [ [className =? c --> doFloat | c <- myFloats]
  122. , [title =? t --> doFloat | t <- myOtherFloats]
  123. , [resource =? r --> doFloat | r <- myIgnores]
  124. , [className =? "Iceweasel" --> doF (W.shift "1:www")]
  125. , [title =? "mcabber" --> doF (W.shift "3:im")]
  126. , [title =? "irssi" --> doF (W.shift "3:im")]
  127. , [title =? "ncmpcpp" --> doF (W.shift "3:im")]
  128. ]
  129. where
  130. myFloats = ["MPlayer", "Xmessage", "Gimp", "feh", "Wine"]
  131. myOtherFloats = ["Downloads", "Iceweasel Preferences", "Save As...", "many more..."]
  132. myIgnores = []
  133.  
  134. myDzenPP h = defaultPP
  135. { ppCurrent = wrap "^bg(#606060)^p()^fg(#f3f3f3)" "^fg()^bg()^p()" . \wsId -> if (':' `elem` wsId) then drop 2 wsId else wsId
  136. , ppHidden = wrap "" "^fg()^bg()^p()" . \wsId -> if (':' `elem` wsId) then drop 2 wsId else wsId
  137. , ppHiddenNoWindows = wrap "^fg(#757575)^bg()^p()" "^fg()^bg()^p()" . \wsId -> if (':' `elem` wsId) then drop 2 wsId else wsId
  138. , ppUrgent = wrap "^fg(#cc9933)^bg()^p()" "^fg()^bg()^p()" . \wsId -> if (':' `elem` wsId) then drop 2 wsId else wsId
  139. , ppSep = " "
  140. , ppWsSep = " "
  141. , ppTitle = dzenColor "#f3f3f3" "" . wrap "< " " >"
  142. , ppLayout = dzenColor "" "" .
  143. (\x -> case x of
  144. "Hinted Tall" -> "^fg(#757575)^i(/home/smeea/.dzen/tall.xbm)"
  145. "Hinted Wide" -> "^fg(#757575)^i(/home/smeea/.dzen/wide.xbm)"
  146. "Hinted Full" -> "^fg(#757575)^i(/home/smeea/.dzen/full.xbm)"
  147. "Hinted Spiral" -> "^fg(#757575)^i(/home/smeea/.dzen/spiral.xbm)"
  148.  
  149. )
  150. , ppOutput = hPutStrLn h
  151. }
  152.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement