Difference between revisions of "Xmonad/Config archive/gray hemp's xmonad.hs"

From HaskellWiki
Jump to navigation Jump to search
Line 23: Line 23:
 
main = do
 
main = do
 
myStatusBarPipe <- spawnPipe myStatusBar
 
myStatusBarPipe <- spawnPipe myStatusBar
  +
spawn myCPUBar
  +
spawn myBatteryBar
 
spawn myTimeBar
 
spawn myTimeBar
 
spawn myXxkbBar
 
spawn myXxkbBar
Line 45: Line 47:
   
 
-- Colors
 
-- Colors
myFgColor = "#d0d3e6"
+
myBgBgColor = "black"
myBgColor = "#363743"
+
myFgColor = "gray80"
  +
myBgColor = "gray20"
   
myHighlightedFgColor = "#ffffff"
+
myHighlightedFgColor = "white"
myHighlightedBgColor = "#60626b"
+
myHighlightedBgColor = "gray40"
   
myActiveBorderColor = "#363743"
+
myActiveBorderColor = "gray80"
myInactiveBorderColor = "#d0d3e6"
+
myInactiveBorderColor = "gray20"
   
 
myCurrentWsFgColor = "white"
myLayoutColor = "#a0a3b0"
 
 
myCurrentWsBgColor = "gray40"
 
 
myVisibleWsFgColor = "gray80"
myCurrentWsFgColor = "#ffffff"
 
 
myVisibleWsBgColor = "gray20"
myCurrentWsBgColor = "#80828e"
 
 
myHiddenWsFgColor = "gray80"
myVisibleWsFgColor = "#ffffff"
 
 
myHiddenEmptyWsFgColor = "gray50"
myVisibleWsBgColor = "#60626b"
 
 
myUrgentWsBgColor = "brown"
myHiddenWsFgColor = "#d0d3e6"
 
 
myTitleFgColor = "white"
myHiddenEmptyWsFgColor = "#80828e"
 
myUrgentWsBgColor = "#725050"
 
myTitleFgColor = "#ffffff"
 
 
myUrgencyHintFgColor = "#ffffff"
 
myUrgencyHintBgColor = "#7e5250"
 
   
 
myUrgencyHintFgColor = "white"
 
myUrgencyHintBgColor = "brown"
   
 
-- Bars
 
-- Bars
myDzenBarGeneralOptions = " -ta l -fn '" ++ myFont ++ "' -fg '" ++ myFgColor ++ "' -bg '" ++ myBgColor ++ "'"
+
myDzenBarGeneralOptions = "-fn '" ++ myFont ++ "' -fg '" ++ myFgColor ++ "' -bg '" ++ myBgColor ++ "'"
   
myStatusBar = "dzen2 -w 1117 " ++ myDzenBarGeneralOptions
+
myStatusBar = "dzen2 -w 952 -ta l " ++ myDzenBarGeneralOptions
myTimeBar = "conky -c ~/.conky_time | dzen2 -x 1117 -w 148" ++ myDzenBarGeneralOptions
+
myCPUBar = "conky -c ~/.conky_cpu | sh | dzen2 -x 953 -w 90 -ta l " ++ myDzenBarGeneralOptions
  +
myBatteryBar = "conky -c ~/.conky_battery | sh | dzen2 -x 1044 -w 63 -ta l " ++ myDzenBarGeneralOptions
  +
myTimeBar = "conky -c ~/.conky_time | dzen2 -x 1108 -w 156 -ta c " ++ myDzenBarGeneralOptions
 
myXxkbBar = "xxkb" -- configuration in ~/.xxkbrc
 
myXxkbBar = "xxkb" -- configuration in ~/.xxkbrc
   
Line 116: Line 118:
 
-- Workspaces names
 
-- Workspaces names
 
myWorkspaces = [
 
myWorkspaces = [
supWsNum "1" "dev",
+
supWsNum "1" "dv",
supWsNum "2" "web",
+
supWsNum "2" "wb",
supWsNum "3" "con",
+
supWsNum "3" "tr",
supWsNum "4" "msg",
+
supWsNum "4" "ms",
supWsNum "5" "msc",
+
supWsNum "5" "dc",
supWsNum "6" "tmp",
+
supWsNum "6" "lg",
" 7 ", " 8 ", " 9 "
+
supWsNum "7" "tm",
  +
supWsNum "8" "",
  +
supWsNum "9" ""
 
]
 
]
 
where
 
where
supWsNum wsNum wsName = "^p(;_TOP)^fn(" ++ mySmallFont ++ ") " ++ wsNum ++ " ^fn()^p()" ++ wsName ++ " "
+
supWsNum wsName wsNum =" " ++ wsName ++ "^p(;_TOP)^fn(" ++ mySmallFont ++ ")" ++ wsNum ++ " ^fn()^p()"
   
 
-- Dzen config
 
-- Dzen config
 
myDzenPP h = defaultPP {
 
myDzenPP h = defaultPP {
 
ppOutput = hPutStrLn h,
 
ppOutput = hPutStrLn h,
ppSep = " ",
+
ppSep = "^bg(" ++ myBgBgColor ++ ")^r(1,15)^bg()",
 
ppWsSep = "",
 
ppWsSep = "",
 
ppCurrent = wrapFgBg myCurrentWsFgColor myCurrentWsBgColor,
 
ppCurrent = wrapFgBg myCurrentWsFgColor myCurrentWsBgColor,
Line 138: Line 142:
 
ppUrgent = wrapBg myUrgentWsBgColor,
 
ppUrgent = wrapBg myUrgentWsBgColor,
 
ppTitle = (\x -> " " ++ wrapFg myTitleFgColor x),
 
ppTitle = (\x -> " " ++ wrapFg myTitleFgColor x),
ppLayout = dzenColor myLayoutColor "" .
+
ppLayout = dzenColor myFgColor"" .
 
(\x -> case x of
 
(\x -> case x of
 
"ResizableTall" -> wrapBitmap "rob/tall.xbm"
 
"ResizableTall" -> wrapBitmap "rob/tall.xbm"
Line 149: Line 153:
 
wrapFg color content = wrap ("^fg(" ++ color ++ ")") "^fg()" content
 
wrapFg color content = wrap ("^fg(" ++ color ++ ")") "^fg()" content
 
wrapBg color content = wrap ("^bg(" ++ color ++ ")") "^bg()" content
 
wrapBg color content = wrap ("^bg(" ++ color ++ ")") "^bg()" content
wrapBitmap bitmap = "^i(" ++ myBitmapsPath ++ bitmap ++ ")"
+
wrapBitmap bitmap = "^p(5)^i(" ++ myBitmapsPath ++ bitmap ++ ")^p(5)"
   
 
-- Define a combination of layouts
 
-- Define a combination of layouts

Revision as of 20:19, 29 March 2010

-- dzen2 plus conky config with urgency for xmonad-0.9*
-- uses icons from dzen.geekmode.org
import XMonad
import XMonad.Core

import XMonad.Prompt
import XMonad.Prompt.Shell
import XMonad.Prompt.Man

import XMonad.Layout
import XMonad.Layout.NoBorders
import XMonad.Layout.ResizableTile

import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Hooks.UrgencyHook

import qualified Data.Map as M
import Graphics.X11.Xlib
import XMonad.Util.Run

main = do
  myStatusBarPipe <- spawnPipe myStatusBar
  spawn myCPUBar
  spawn myBatteryBar
  spawn myTimeBar
  spawn myXxkbBar
  xmonad $ myUrgencyHook $ defaultConfig {
    terminal = myTerminal,
    normalBorderColor = myInactiveBorderColor,
    focusedBorderColor = myActiveBorderColor,
    workspaces = myWorkspaces,
    modMask = myModMask,
    keys = myKeys,
    manageHook = myManageHook <+> manageDocks <+> manageHook defaultConfig,
    layoutHook = avoidStruts $ myLayoutHook,
    logHook = dynamicLogWithPP $ myDzenPP myStatusBarPipe
    }

-- Fonts
myFont = "xft:monospace:size=8"
mySmallFont = "xft:monospace:size=5"

-- Paths
myBitmapsPath = "/home/gray/.dzen/bitmaps/"

-- Colors
myBgBgColor = "black"
myFgColor = "gray80"
myBgColor = "gray20"

myHighlightedFgColor = "white"
myHighlightedBgColor = "gray40"

myActiveBorderColor = "gray80"
myInactiveBorderColor = "gray20"

myCurrentWsFgColor = "white"
myCurrentWsBgColor = "gray40"
myVisibleWsFgColor = "gray80"
myVisibleWsBgColor = "gray20"
myHiddenWsFgColor = "gray80"
myHiddenEmptyWsFgColor = "gray50"
myUrgentWsBgColor = "brown"
myTitleFgColor = "white"

myUrgencyHintFgColor = "white"
myUrgencyHintBgColor = "brown"

-- Bars
myDzenBarGeneralOptions = "-fn '" ++ myFont ++ "' -fg '" ++ myFgColor ++ "' -bg '" ++ myBgColor ++ "'"

myStatusBar = "dzen2 -w 952 -ta l " ++ myDzenBarGeneralOptions
myCPUBar = "conky -c ~/.conky_cpu | sh | dzen2 -x 953 -w 90 -ta l " ++ myDzenBarGeneralOptions
myBatteryBar = "conky -c ~/.conky_battery | sh | dzen2 -x 1044 -w 63 -ta l " ++ myDzenBarGeneralOptions
myTimeBar = "conky -c ~/.conky_time | dzen2 -x 1108 -w 156 -ta c " ++ myDzenBarGeneralOptions
myXxkbBar = "xxkb" -- configuration in ~/.xxkbrc

-- Prefered terminal
myTerminal = "urxvt"

-- Rebind Mod to Windows key
myModMask = mod4Mask

-- Prompt config
myXPConfig = defaultXPConfig {
  position = Bottom,
  promptBorderWidth = 0,
  font = myFont,
  height = 15,
  bgColor = myBgColor,
  fgColor = myFgColor,
  fgHLight = myHighlightedFgColor,
  bgHLight = myHighlightedBgColor
  }

-- Union default and new key bindings
myKeys x  = M.union (M.fromList (newKeys x)) (keys defaultConfig x)

-- Add new and/or redefine key bindings
newKeys conf@(XConfig {XMonad.modMask = modm}) = [
  -- Use shellPrompt instead of default dmenu
  ((modm, xK_p), shellPrompt myXPConfig),
  -- Do not leave useless conky, dzen and xxkb after restart
  ((modm, xK_q), spawn "killall conky dzen2 xxkb; xmonad --recompile; xmonad --restart"),
  -- ResizableTall key bindings
  ((modm, xK_a), sendMessage MirrorShrink),
  ((modm, xK_z), sendMessage MirrorExpand),
  -- Manual page prompt
  ((modm, xK_o), manPrompt myXPConfig),
  ((modm, xK_u), focusUrgent),
  -- Make a screeshot
  ((0,           xK_Print), spawn "scrot -e 'mv $f ~/tmp/'"),
  ((controlMask, xK_Print), spawn "sleep 0.2; scrot -s -e 'mv $f ~/tmp/'") -- interactive
  ]

-- Workspaces names
myWorkspaces = [
  supWsNum "1" "dv",
  supWsNum "2" "wb",
  supWsNum "3" "tr",
  supWsNum "4" "ms",
  supWsNum "5" "dc",
  supWsNum "6" "lg",
  supWsNum "7" "tm",
  supWsNum "8" "",
  supWsNum "9" ""
  ]
  where
    supWsNum wsName wsNum =" " ++ wsName ++  "^p(;_TOP)^fn(" ++ mySmallFont  ++ ")" ++ wsNum ++ "  ^fn()^p()"

-- Dzen config
myDzenPP h = defaultPP {
  ppOutput = hPutStrLn h,
  ppSep = "^bg(" ++ myBgBgColor ++ ")^r(1,15)^bg()",
  ppWsSep = "",
  ppCurrent = wrapFgBg myCurrentWsFgColor myCurrentWsBgColor,
  ppVisible = wrapFgBg myVisibleWsFgColor myVisibleWsBgColor,
  ppHidden = wrapFg myHiddenWsFgColor,
  ppHiddenNoWindows = wrapFg myHiddenEmptyWsFgColor,
  ppUrgent = wrapBg myUrgentWsBgColor,
  ppTitle = (\x -> " " ++ wrapFg myTitleFgColor x),
  ppLayout  = dzenColor myFgColor"" .
                (\x -> case x of
                    "ResizableTall" -> wrapBitmap "rob/tall.xbm"
                    "Mirror ResizableTall" -> wrapBitmap "rob/mtall.xbm"
                    "Full" -> wrapBitmap "rob/full.xbm"
                )
  }
  where
    wrapFgBg fgColor bgColor content= wrap ("^fg(" ++ fgColor ++ ")^bg(" ++ bgColor ++ ")") "^fg()^bg()" content
    wrapFg color content = wrap ("^fg(" ++ color ++ ")") "^fg()" content
    wrapBg color content = wrap ("^bg(" ++ color ++ ")") "^bg()" content
    wrapBitmap bitmap = "^p(5)^i(" ++ myBitmapsPath ++ bitmap ++ ")^p(5)"

-- Define a combination of layouts
myLayoutHook = smartBorders $ (tiled ||| Mirror tiled ||| Full) -- The only window w/o borders
  where
    tiled = ResizableTall nmaster delta ratio []
    nmaster = 1
    delta = 3/100
    ratio = 1/2

-- Urgency hint configuration
myUrgencyHook = withUrgencyHook dzenUrgencyHook
    {
      args = [
         "-x", "0", "-y", "785", "-h", "15", "-w", "1280",
         "-ta", "r", "-expand", "l",
         "-fg", "" ++ myUrgencyHintFgColor ++ "",
         "-bg", "" ++ myUrgencyHintBgColor ++ "",
         "-fn", "" ++ myFont ++ ""
         ],
      duration = (7 `seconds`)
    }

myManageHook = composeAll [
  resource  =? "XXkb" --> doIgnore
  ]