Guest

asfethan

By: a guest on Jan 6th, 2010  |  syntax: Haskell  |  size: 6.50 KB  |  hits: 98  |  expires: Never
download  |  raw  |  embed  |  report abuse
Copied
  1. import XMonad
  2. import Data.Ratio ((%))
  3. import XMonad.Actions.NoBorders
  4. import XMonad.Hooks.DynamicLog
  5. import XMonad.Hooks.EwmhDesktops
  6. import XMonad.Hooks.ManageDocks
  7. import XMonad.Hooks.UrgencyHook
  8. import XMonad.Layout
  9. import XMonad.Layout.Named
  10. import XMonad.Layout.NoBorders (smartBorders)
  11. import XMonad.Layout.PerWorkspace
  12. import XMonad.Layout.Spacing
  13. import XMonad.Layout.Tabbed
  14. import XMonad.Layout.IM
  15. import XMonad.Layout.Grid
  16. import XMonad.Prompt
  17. import XMonad.Prompt.Workspace
  18. import XMonad.Util.Run
  19. import XMonad.Util.Loggers
  20. import qualified Data.Map as M
  21. import qualified XMonad.StackSet as W
  22. import System.IO
  23.  
  24. myFont = "xft:Tahoma:size=8:bold"
  25. myFocusColor = "#242424"
  26. myTextColor = "#dfdfdf"
  27. myLightTextColor = "#242424"
  28. myBackgroundColor = "#444444"
  29. myLightBackgroundColor = "#eccc6c"
  30. myUrgentColor = "#00ff00"
  31.  
  32. myTheme :: Theme
  33. myTheme = defaultTheme
  34.         {
  35.                 activeColor = myLightBackgroundColor
  36.                 ,inactiveColor = myBackgroundColor
  37.                 ,urgentColor = myBackgroundColor
  38.                 ,activeBorderColor = myFocusColor
  39.                 ,inactiveTextColor = myTextColor
  40.                 ,urgentTextColor = "#dfdfdf"
  41.                 ,inactiveBorderColor = "#242424"
  42.                 ,urgentBorderColor = myUrgentColor
  43.                 ,activeTextColor = myLightTextColor
  44.                 ,fontName = myFont
  45.                 ,decoHeight = 18
  46.         }
  47.  
  48. myManageHook = composeAll
  49.         [
  50.                 className =? "MPlayer"                  --> doFloat
  51.                 ,className =? "Smplayer"                --> doFloat
  52.                 ,className =? "heroesofnewerth"         --> doFloat
  53.                 ,className =? "urbanterror"             --> doFloat
  54.                 ,resource  =? "pinentry-gtk-2"          --> doFloat
  55.                 ,resource  =? "stalonetray"             --> doIgnore
  56.                 ,className =? "Wine"                    --> doFloat
  57.                 ,className =? "Wow.exe"                 --> doFloat
  58.         ]
  59.  
  60. myFloatingHook = composeAll
  61.         [
  62.                 stringProperty "WM_WINDOW_ROLE"         =? "gimp-toolbox-color-dialog"                  --> doFloat
  63.                 ,stringProperty "WM_WINDOW_ROLE"        =? "gimp-layer-new"                             --> doFloat
  64.                 ,stringProperty "WM_WINDOW_ROLE"        =? "gimp-vectors-edit"                          --> doFloat
  65.                 ,stringProperty "WM_WINDOW_ROLE"        =? "gimp-dock"                                  --> doFloat
  66.                 ,stringProperty "WM_WINDOW_ROLE"        =? "gimp-levels-tool"                           --> doFloat
  67.                 ,stringProperty "WM_WINDOW_ROLE"        =? "preferences"                                --> doFloat
  68.                 ,stringProperty "WM_WINDOW_ROLE"        =? "gimp-keyboard-shortcuts-dialog"             --> doFloat
  69.                 ,stringProperty "WM_WINDOW_ROLE"        =? "gimp-modules"                               --> doFloat
  70.                 ,stringProperty "WM_WINDOW_ROLE"        =? "unit-editor"                                --> doFloat
  71.                 ,stringProperty "WM_WINDOW_ROLE"        =? "screenshot"                                 --> doFloat
  72.                 ,stringProperty "WM_WINDOW_ROLE"        =? "gimp-message-dialog"                        --> doFloat
  73.                 ,stringProperty "WM_WINDOW_ROLE"        =? "gimp-tip-of-the-day"                        --> doFloat
  74.                 ,stringProperty "WM_WINDOW_ROLE"        =? "plugin-browser"                             --> doFloat
  75.                 ,stringProperty "WM_WINDOW_ROLE"        =? "procedure-browser"                          --> doFloat
  76.                 ,stringProperty "WM_WINDOW_ROLE"        =? "gimp-display-filters"                       --> doFloat
  77.                 ,stringProperty "WM_WINDOW_ROLE"        =? "gimp-color-selector"                        --> doFloat
  78.                 ,stringProperty "WM_WINDOW_ROLE"        =? "gimp-file-open-location"                    --> doFloat
  79.                 ,stringProperty "WM_WINDOW_ROLE"        =? "gimp-color-balance-tool"                    --> doFloat
  80.                 ,stringProperty "WM_WINDOW_ROLE"        =? "gimp-hue-saturation-tool"                   --> doFloat
  81.                 ,stringProperty "WM_WINDOW_ROLE"        =? "gimp-colorize-tool"                         --> doFloat
  82.                 ,stringProperty "WM_WINDOW_ROLE"        =? "gimp-brightness-contrast-tool"              --> doFloat
  83.                 ,stringProperty "WM_WINDOW_ROLE"        =? "gimp-threshold-tool"                        --> doFloat
  84.                 ,stringProperty "WM_WINDOW_ROLE"        =? "gimp-curves-tool"                           --> doFloat
  85.                 ,stringProperty "WM_WINDOW_ROLE"        =? "gimp-posterize-tool"                        --> doFloat
  86.                 ,stringProperty "WM_WINDOW_ROLE"        =? "gimp-desaturate-tool"                       --> doFloat
  87.                 ,stringProperty "WM_WINDOW_ROLE"        =? "gimp-scale-tool"                            --> doFloat
  88.                 ,stringProperty "WM_WINDOW_ROLE"        =? "gimp-shear-tool"                            --> doFloat
  89.                 ,stringProperty "WM_WINDOW_ROLE"        =? "gimp-perspective-tool"                      --> doFloat
  90.                 ,stringProperty "WM_WINDOW_ROLE"        =? "gimp-rotate-tool"                           --> doFloat
  91.         ]
  92.  
  93. myShiftingHook = composeAll
  94.         [
  95.                 className  =? "Pidgin"          --> doF (W.shift "4")
  96.                 ,className =? "Skype"           --> doF (W.shift "4")
  97.                 ,className =? "Minefield"       --> doF (W.shift "3")
  98.                 ,className =? "Gimp"            --> doF (W.shift "G")
  99.                 ,className =? "SMPlayer"        --> doF (W.shift "MM")
  100.                 ,resource  =? "claws-mail"      --> doF (W.shift "5")
  101.                 ,className =? "Liferea"         --> doF (W.shift "5")
  102.                 ,className =? "Wine"            --> doF (W.shift "W")
  103.         ]
  104.  
  105. myPP h = defaultPP
  106.         {
  107.                 ppCurrent = wrap "^ib(0)^bg(#202020)^r(5x0)^fg(#eccc6c)" "^r(5x0)^bg()"
  108.                 ,ppVisible = wrap "^fg()^r(5x0)" "^r(5x0)"
  109.                 ,ppHidden = wrap "^fg()^r(5x0)" "^r(5x0)"
  110.                 ,ppHiddenNoWindows = wrap "^r(5x0)^fg(#707070)" "^r(5x0)"
  111.                 ,ppUrgent = wrap "" "^p(-3)^fg(#00ff00)!^fg()^r(2x0)"
  112.                 ,ppSep = "^p(+4)^fg(#202020)^r(1x16)^fg()^p(+4)"
  113.                 ,ppTitle = wrap "^fg(#bc8f4e)^r(5x0)<^r(10x0)^fg(#b0b0b0)" "^fg()^fg(#bc8f4e)^r(10x0)>^fg()" . shorten 70
  114.                 , ppLayout  = dzenColor "#c5c5c5" "" .
  115.                         (\x -> case x of
  116.                                 "Tall" ->               "^i(/home/asfalatus/share/dzen2/images/tall.xbm)"
  117.                                 "Mirror" ->             "^i(/home/asfalatus/share/dzen2/images/mirror.xbm)"
  118.                                 "Full" ->               "^i(/home/asfalatus/share/dzen2/images/full.xbm)"
  119.                                 "Tabbed" ->             "^i(/home/asfalatus/share/dzen2/images/tabbed.xbm)"
  120.                                 "IM" ->                 "^i(/home/asfalatus/share/dzen2/images/im.xbm)"
  121.                         )
  122.  
  123.                 ,ppOutput = hPutStrLn h
  124.         }
  125.  
  126. myKeys = M.fromList $
  127.         [
  128.                 ((mod4Mask     , xK_b     ), withFocused toggleBorder)
  129.                 ,((mod4Mask     , xK_p     ), spawn "/usr/local/bin/custom_dmenu_run")
  130.                 ,((mod4Mask     , xK_u     ), focusUrgent)
  131.         ]
  132.  
  133. main = do
  134.         mainSbar        <- spawnPipe "dzen2_xft -p -x '0' -y '0' -w '700' -h '16' -ta 'l' -fg '#dfdfdf' -bg '#070707' -fn 'Terminus-8'"
  135.         xmonad  $ withUrgencyHookC NoUrgencyHook urgencyConfig { suppressWhen = Focused }
  136.                 $ defaultConfig
  137.                 {
  138.                         manageHook = myManageHook <+> myFloatingHook <+> myShiftingHook <+> manageDocks
  139.                         ,logHook                = dynamicLogWithPP $ myPP mainSbar
  140.                         ,terminal               = "xterm"
  141.                         ,normalBorderColor      = "#202020"
  142.                         ,focusedBorderColor     = "#dfdfdf"
  143.                         ,modMask                = mod4Mask
  144.                         ,borderWidth            = 1
  145.                         ,workspaces             = ["1", "2", "3", "4", "5", "6", "MM", "G", "W"]
  146.                         ,keys                   = \c -> myKeys `M.union` keys defaultConfig c
  147.                         ,layoutHook             = myLayout
  148.                 }
  149.  
  150. -- tabbed shrinkText myTheme
  151.  
  152. myLayout = avoidStrutsOn [U,D] $ onWorkspace "4" (im) $ onWorkspace "3" (tabs) $ onWorkspace "5" (tabs) $ onWorkspace "W" (full) $
  153.             htiled
  154.         ||| vtiled
  155.         ||| full
  156.         ||| tabs
  157.         ||| im
  158.          where
  159.                 htiled = named "Tall" (spacing 5 (Tall 1 (3/100) (1/2)))
  160.                 vtiled = named "Mirror" (Mirror htiled)
  161.                 full   = named "Full" (smartBorders (Full))
  162.                 tabs   = named "Tabbed" (smartBorders (tabbed shrinkText myTheme))
  163.                 im     = named "IM" (spacing 5 (withIM (2%10) (Role "buddy_list") (Mirror (Tall 1 (3/100) (1/2)))))
  164. -- EOF