Difference between revisions of "Xmonad/Config archive/gray hemp's xmonad.hs"
From HaskellWiki
< Xmonad | Config archive
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 = " | + | myBgBgColor = "black" |
− | myBgColor = " | + | myFgColor = "gray80" |
+ | myBgColor = "gray20" | ||
− | myHighlightedFgColor = " | + | myHighlightedFgColor = "white" |
− | myHighlightedBgColor = " | + | myHighlightedBgColor = "gray40" |
− | myActiveBorderColor = " | + | myActiveBorderColor = "gray80" |
− | myInactiveBorderColor = " | + | myInactiveBorderColor = "gray20" |
− | + | myCurrentWsFgColor = "white" | |
− | + | myCurrentWsBgColor = "gray40" | |
− | myCurrentWsFgColor = " | + | myVisibleWsFgColor = "gray80" |
− | myCurrentWsBgColor = " | + | myVisibleWsBgColor = "gray20" |
− | myVisibleWsFgColor = " | + | myHiddenWsFgColor = "gray80" |
− | myVisibleWsBgColor = " | + | myHiddenEmptyWsFgColor = "gray50" |
− | myHiddenWsFgColor = " | + | myUrgentWsBgColor = "brown" |
− | myHiddenEmptyWsFgColor = " | + | myTitleFgColor = "white" |
− | myUrgentWsBgColor = " | ||
− | myTitleFgColor = " | ||
− | |||
− | |||
− | |||
+ | myUrgencyHintFgColor = "white" | ||
+ | myUrgencyHintBgColor = "brown" | ||
-- Bars | -- Bars | ||
− | myDzenBarGeneralOptions = " | + | myDzenBarGeneralOptions = "-fn '" ++ myFont ++ "' -fg '" ++ myFgColor ++ "' -bg '" ++ myBgColor ++ "'" |
− | myStatusBar = "dzen2 -w | + | myStatusBar = "dzen2 -w 952 -ta l " ++ myDzenBarGeneralOptions |
− | myTimeBar = "conky -c ~/.conky_time | dzen2 -x | + | 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" " | + | supWsNum "1" "dv", |
− | supWsNum "2" " | + | supWsNum "2" "wb", |
− | supWsNum "3" " | + | supWsNum "3" "tr", |
− | supWsNum "4" " | + | supWsNum "4" "ms", |
− | supWsNum "5" " | + | supWsNum "5" "dc", |
− | supWsNum "6" " | + | supWsNum "6" "lg", |
− | " 7 ", " 8 ", " 9 " | + | supWsNum "7" "tm", |
+ | supWsNum "8" "", | ||
+ | supWsNum "9" "" | ||
] | ] | ||
where | where | ||
− | supWsNum wsNum 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 | + | 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
]