Difference between revisions of "Xmonad/Config archive/Xilon's xmonad.hs"
< Xmonad | Config archive
Jump to navigation
Jump to search
(Made dzen script a tiny bit faster) |
(Added UrgencyHook functionality) |
||
Line 6: | Line 6: | ||
import XMonad |
import XMonad |
||
import XMonad.Layout |
import XMonad.Layout |
||
− | import XMonad.Layout.NoBorders ( |
+ | import XMonad.Layout.NoBorders (noBorders) |
import XMonad.Layout.PerWorkspace |
import XMonad.Layout.PerWorkspace |
||
+ | import XMonad.Layout.LayoutHints |
||
import XMonad.Hooks.DynamicLog (PP(..), dynamicLogWithPP, wrap, defaultPP) |
import XMonad.Hooks.DynamicLog (PP(..), dynamicLogWithPP, wrap, defaultPP) |
||
+ | import XMonad.Hooks.UrgencyHook |
||
import XMonad.Util.Run (spawnPipe) |
import XMonad.Util.Run (spawnPipe) |
||
import qualified XMonad.StackSet as W |
import qualified XMonad.StackSet as W |
||
+ | import qualified Data.Map as M |
||
import System.IO (hPutStrLn) |
import System.IO (hPutStrLn) |
||
Line 21: | Line 24: | ||
myNormalFGColor = "#babdb6" |
myNormalFGColor = "#babdb6" |
||
myFocusedFGColor = "#73d216" |
myFocusedFGColor = "#73d216" |
||
+ | myUrgentFGColor = "#75507b" |
||
+ | myUrgentBGColor = myNormalBGColor |
||
mySeperatorColor = "#2e3436" |
mySeperatorColor = "#2e3436" |
||
-- }}} |
-- }}} |
||
Line 32: | Line 37: | ||
myWorkspaces :: [WorkspaceId] |
myWorkspaces :: [WorkspaceId] |
||
myWorkspaces = ["1:general", "2:internet", "3:chat", "4:code"] ++ map show [5..9 :: Int] |
myWorkspaces = ["1:general", "2:internet", "3:chat", "4:code"] ++ map show [5..9 :: Int] |
||
+ | -- }}} |
||
+ | |||
+ | -- Keybindings {{{ |
||
+ | myKeys (XConfig {modMask = modm}) = M.fromList $ |
||
+ | [ |
||
+ | ((modm , xK_p), spawn ("exec `dmenu_path | dmenu -fn '" ++ myFont ++ "' -nb '" ++ myNormalBGColor ++ "' -nf '" ++ myNormalFGColor ++ "' -sb '" ++ myFocusedBGColor ++ "' -sf '" ++ myFocusedFGColor ++ "'`")) |
||
+ | ] |
||
-- }}} |
-- }}} |
||
Line 39: | Line 51: | ||
main = do |
main = do |
||
statusBarPipe <- spawnPipe statusBarCmd |
statusBarPipe <- spawnPipe statusBarCmd |
||
− | xmonad $ defaultConfig { |
+ | xmonad $ withUrgencyHook NoUrgencyHook $defaultConfig { |
modMask = mod4Mask, |
modMask = mod4Mask, |
||
borderWidth = 1, |
borderWidth = 1, |
||
terminal = "urxvtc", |
terminal = "urxvtc", |
||
normalBorderColor = myNormalBGColor, |
normalBorderColor = myNormalBGColor, |
||
− | focusedBorderColor = |
+ | focusedBorderColor = myFocusedFGColor, |
defaultGaps = [(16,0,0,0)], |
defaultGaps = [(16,0,0,0)], |
||
manageHook = manageHook defaultConfig <+> myManageHook, |
manageHook = manageHook defaultConfig <+> myManageHook, |
||
layoutHook = onWorkspace "3:chat" chatLayout globalLayout, |
layoutHook = onWorkspace "3:chat" chatLayout globalLayout, |
||
workspaces = myWorkspaces, |
workspaces = myWorkspaces, |
||
− | logHook = dynamicLogWithPP $ myPP statusBarPipe |
+ | logHook = dynamicLogWithPP $ myPP statusBarPipe, |
+ | keys = \c -> myKeys c `M.union` keys defaultConfig c |
||
} |
} |
||
where |
where |
||
− | globalLayout = tiled ||| Full ||| Mirror tiled |
+ | globalLayout = layoutHints (tiled) ||| noBorders Full ||| Mirror tiled |
chatLayout = Full |
chatLayout = Full |
||
tiled = Tall 1 (3/100) (1/2) |
tiled = Tall 1 (3/100) (1/2) |
||
Line 73: | Line 86: | ||
myPP handle = defaultPP { |
myPP handle = defaultPP { |
||
ppCurrent = wrap ("^fg(" ++ myFocusedFGColor ++ ")^bg(" ++ myFocusedBGColor ++ ")^p(4)") "^p(4)^fg()^bg()", |
ppCurrent = wrap ("^fg(" ++ myFocusedFGColor ++ ")^bg(" ++ myFocusedBGColor ++ ")^p(4)") "^p(4)^fg()^bg()", |
||
+ | ppUrgent = wrap ("^fg(" ++ myUrgentFGColor ++ ")^bg(" ++ myUrgentBGColor ++ ")^p(4)") "^p(4)^fg()^bg()", |
||
ppVisible = wrap ("^fg(" ++ myNormalFGColor ++ ")^bg(" ++ myNormalBGColor ++ ")^p(4)") "^p(4)^fg()^bg()", |
ppVisible = wrap ("^fg(" ++ myNormalFGColor ++ ")^bg(" ++ myNormalBGColor ++ ")^p(4)") "^p(4)^fg()^bg()", |
||
ppSep = "^fg(" ++ mySeperatorColor ++ ")^r(3x3)^fg()", |
ppSep = "^fg(" ++ mySeperatorColor ++ ")^r(3x3)^fg()", |
Revision as of 08:50, 17 December 2007
haskell.hs
-- vim :fdm=marker sw=4 sts=4 ts=4 et ai:
-- Imports {{{
import XMonad
import XMonad.Layout
import XMonad.Layout.NoBorders (noBorders)
import XMonad.Layout.PerWorkspace
import XMonad.Layout.LayoutHints
import XMonad.Hooks.DynamicLog (PP(..), dynamicLogWithPP, wrap, defaultPP)
import XMonad.Hooks.UrgencyHook
import XMonad.Util.Run (spawnPipe)
import qualified XMonad.StackSet as W
import qualified Data.Map as M
import System.IO (hPutStrLn)
-- }}}
-- Control Center {{{
-- Colour scheme {{{
myNormalBGColor = "#2e3436"
myFocusedBGColor = "#414141"
myNormalFGColor = "#babdb6"
myFocusedFGColor = "#73d216"
myUrgentFGColor = "#75507b"
myUrgentBGColor = myNormalBGColor
mySeperatorColor = "#2e3436"
-- }}}
-- Icon packs can be found here:
-- http://robm.selfip.net/wiki.sh/-main/DzenIconPacks
myBitmapsDir = "/home/xilon/.share/icons/dzen"
myFont = "-*-terminus-medium-*-*-*-12-*-*-*-*-*-iso8859-1"
-- }}}
-- Workspaces {{{
myWorkspaces :: [WorkspaceId]
myWorkspaces = ["1:general", "2:internet", "3:chat", "4:code"] ++ map show [5..9 :: Int]
-- }}}
-- Keybindings {{{
myKeys (XConfig {modMask = modm}) = M.fromList $
[
((modm , xK_p), spawn ("exec `dmenu_path | dmenu -fn '" ++ myFont ++ "' -nb '" ++ myNormalBGColor ++ "' -nf '" ++ myNormalFGColor ++ "' -sb '" ++ myFocusedBGColor ++ "' -sf '" ++ myFocusedFGColor ++ "'`"))
]
-- }}}
statusBarCmd= "dzen2 -p -h 16 -ta l -bg '" ++ myNormalBGColor ++ "' -fg '" ++ myNormalFGColor ++ "' -w 500 -sa c -fn '" ++ myFont ++ "'"
-- Main {{{
main = do
statusBarPipe <- spawnPipe statusBarCmd
xmonad $ withUrgencyHook NoUrgencyHook $defaultConfig {
modMask = mod4Mask,
borderWidth = 1,
terminal = "urxvtc",
normalBorderColor = myNormalBGColor,
focusedBorderColor = myFocusedFGColor,
defaultGaps = [(16,0,0,0)],
manageHook = manageHook defaultConfig <+> myManageHook,
layoutHook = onWorkspace "3:chat" chatLayout globalLayout,
workspaces = myWorkspaces,
logHook = dynamicLogWithPP $ myPP statusBarPipe,
keys = \c -> myKeys c `M.union` keys defaultConfig c
}
where
globalLayout = layoutHints (tiled) ||| noBorders Full ||| Mirror tiled
chatLayout = Full
tiled = Tall 1 (3/100) (1/2)
-- }}}
-- Window rules (floating, tagging, etc) {{{
myManageHook = composeAll [
className =? "Firefox-bin" --> doF(W.shift "2:internet"),
className =? "Gajim.py" --> doF(W.shift "3:chat"),
title =? "Gajim" --> doFloat,
className =? "stalonetray" --> doIgnore,
className =? "trayer" --> doIgnore
]
-- }}}
-- Dzen Pretty Printer {{{
-- Stolen from Rob [1] and modified
-- [1] http://haskell.org/haskellwiki/Xmonad/Config_archive/Robert_Manea%27s_xmonad.hs
myPP handle = defaultPP {
ppCurrent = wrap ("^fg(" ++ myFocusedFGColor ++ ")^bg(" ++ myFocusedBGColor ++ ")^p(4)") "^p(4)^fg()^bg()",
ppUrgent = wrap ("^fg(" ++ myUrgentFGColor ++ ")^bg(" ++ myUrgentBGColor ++ ")^p(4)") "^p(4)^fg()^bg()",
ppVisible = wrap ("^fg(" ++ myNormalFGColor ++ ")^bg(" ++ myNormalBGColor ++ ")^p(4)") "^p(4)^fg()^bg()",
ppSep = "^fg(" ++ mySeperatorColor ++ ")^r(3x3)^fg()",
ppLayout = (\x -> case x of
"Tall" -> " ^i(" ++ myBitmapsDir ++ "/tall.xbm) "
"Mirror Tall" -> " ^i(" ++ myBitmapsDir ++ "/mtall.xbm) "
"Full" -> " ^i(" ++ myBitmapsDir ++ "/full.xbm) "
),
ppTitle = wrap ("^fg(" ++ myFocusedFGColor ++ ")") "^fg()" ,
ppOutput = hPutStrLn handle
}
-- }}}
.xinitrc
urxvtd -q -o -f
[[ -x "/usr/bin/numlockx" ]] && numlockx &
xsetroot -cursor_name left_ptr &
trayer --edge top --align right --margin 280 --widthtype pixel --width 48 --height 16 --SetDockType true --transparent true --alpha 204 &
~/.bin/dzen.sh | dzen2 -e 'onstart=lower' -p -ta r -fn '-*-terminus-medium-*-*-*-12-*-*-*-*-*-iso8859-1' -bg '#2e3436' -fg '#babdb6' -h 16 &
exec xmonad;
dzen2 script
#!/bin/zsh
###
# Config
###
DATE_FORMAT="%a %d %b, %Y"
TIME_ZONES=("Australia/Perth" "Europe/Warsaw")
SEPERATOR=' ^fg(#86AA3F)^c(3)^fg() '
BAR_BG='#7DA926'
BAR_FG='#B9D56E'
BAR_H=7
BAR_W=50
BAR_ARGS="-bg $BAR_BG -fg $BAR_FG -w $BAR_W -h $BAR_H"
ICON_DIR="$HOME/.share/icons/dzen"
GLOBALIVAL=1m
DATEIVAL=60
TIMEIVAL=1
###
# Functions
###
_date()
{
date +${DATE_FORMAT}
}
_time()
{
local zone
print_space=0
for zone in $TIME_ZONES; do
[[ $print_space -eq 1 ]] && print -n " "
print -n "${zone:t}: $(TZ=$zone date '+%H:%M')"
print_space=1
done
}
DATEI=0
TIMEI=0
date=$(_date)
times=$(_time)
while true; do
[[ $DATEI -ge $DATEIVAL ]] && date=$(_date) && DATEI=0
[[ $TIMEI -ge $TIMEIVAL ]] && times=$(_time) && TIMEI=0
print "${SEPERATOR}${times}${SEPERATOR}${date}"
DATEI=$(($DATEI+1))
TIMEI=$(($TIMEI+1))
sleep $GLOBALIVAL
done