my current wmiirc
#!/bin/sh -f # Configure wmii wmiiscript=wmiirc # For wmii.sh . wmii.sh # Configuration Variables MODKEY=Mod4 UP=k DOWN=j LEFT=h RIGHT=l # Bars noticetimeout=5 noticebar=/rbar/!notice WMII_NORMCOLORS='#bbbbbb #2c2c2c #3d3d3d' WMII_FOCUSCOLORS='#A0FF00 #686363 #A0FF00' WMII_RBARCOLORS='#A0FF00 #2c2c2c #3d3d3d' WMII_BACKGROUND='#304050' WMII_FONT='6x10' #WMII_FONT='-artwiz-snap-*-*-*-*-*-*-*-*-*-*-*-*' # Foreground, background, border #WMII_FOCUSCOLORS='#fefefe #307080 #5090a0' #WMII_BACKGROUND='#333333' #WMII_NORMCOLORS='#cccccc #004050 #002030' #WMII_FOCUSCOLORS='#000000 #9acd32 #556b2f' #WMII_BACKGROUND='#333333' #WMII_NORMCOLORS='#cccccc #2f4f4f #002030' set -- $(echo $WMII_NORMCOLORS $WMII_FOCUSCOLORS) WMII_MENU='dmenu -b -fn "$WMII_FONT" -nf '"'$1' -nb '$2' -sf '$4' -sb '$5'" WMII_9MENU='wmii9menu -font "$WMII_FONT" -nf '"'$1' -nb '$2' -sf '$4' -sb '$5' -br '$6'" WMII_TERM="uxterm" WMII_BROWSER="firefox2" # Column Rules wmiir write /colrules <<! /gimp/ -> 17+83+41 /.*/ -> 50+50 # Golden Ratio ! # Tagging Rules wmiir write /tagrules <<! /MPlayer|VLC/ -> ~ /.*trayer.*/ -> t /.*firefox*/ -> web ! # Status Bar Info status() { echo -n $(uptime | sed 's/.*://; s/,//g') '||' $(date) \ "||" $(wmiir ls /lbar | xargs | wc -w) "tags" \ # "||" $(wmiir cat /client/sel/label) } echo $WMII_NORMCOLORS | wmiir create $noticebar # Event processing wi_events -s ' ' <<'!' # Events Event CreateTag echo "$WMII_NORMCOLORS" "$@" | wmiir create "/lbar/$@" Event DestroyTag wmiir remove "/lbar/$@" Event FocusTag wmiir xwrite "/lbar/$@" "$WMII_FOCUSCOLORS" "$@" Event UnfocusTag wmiir xwrite "/lbar/$@" "$WMII_NORMCOLORS" "$@" Event UrgentTag shift wmiir xwrite "/lbar/$@" "*$@" Event NotUrgentTag shift wmiir xwrite "/lbar/$@" "$@" Event LeftBarClick LeftBarDND shift wmiir xwrite /ctl view "$@" Event ClientMouseDown client=$1; button=$2 case "$button" in 3) do=$(wi_9menu -initial "$menulast" Stack Default Max Fullscreen Delete Nop) case "$do" in Delete) wmiir xwrite /client/$client/ctl kill;; Fullscreen) wmiir xwrite /client/$client/ctl Fullscreen on;; Stack) wmiir xwrite /tag/sel/ctl colmode sel stack;; Max) wmiir xwrite /tag/sel/ctl colmode sel max;; Default) wmiir xwrite /tag/sel/ctl colmode sel default;; esac menulast=${do:-"$menulast"} esac Event Unresponsive { client=$1; shift msg="The following client is not responding. What would you like to do?$wi_nl" resp=$(wihack -transient $client \ xmessage -nearmouse -buttons Kill,Wait -print \ "$msg $(wmiir read /client/sel/label)") if [ "$resp" = Kill ]; then wmiir xwrite /client/$client/ctl slay & fi }& Event Notice wmiir xwrite $noticebar $wi_arg kill $xpid 2>/dev/null # Let's hope this isn't reused... { sleep $noticetimeout; wmiir xwrite $noticebar ' '; }& xpid = $! # Actions Action quit wmiir xwrite /ctl quit Action exec wmiir xwrite /ctl exec "$@" Action rehash proglist $PATH >$progsfile Action status set +xv if wmiir remove /rbar/status 2>/dev/null; then sleep 2 fi echo "$WMII_RBARCOLORS" | wmiir create /rbar/status while status | wmiir write /rbar/status; do sleep 1 done # Key Bindings Key $MODKEY-Control-t case $(wmiir read /keys | wc -l | tr -d ' \t\n') in 0|1) echo -n "$Keys" | wmiir write /keys wmiir xwrite /ctl grabmod $MODKEY;; *) wmiir xwrite /keys $MODKEY-Control-t wmiir xwrite /ctl grabmod Mod3;; esac Key $MODKEY-v wmiir xwrite $noticebar $wi_ar Key $MODKEY-space wmiir xwrite /tag/sel/ctl select toggle Key $MODKEY-d wmiir xwrite /tag/sel/ctl colmode sel default Key $MODKEY-s wmiir xwrite /tag/sel/ctl colmode sel stack Key $MODKEY-m wmiir xwrite /tag/sel/ctl colmode sel max Key $MODKEY-a Action $(wi_actions | wi_menu) & Key $MODKEY-p eval wmiir setsid "$(wi_menu <$progsfile)" & Key $MODKEY-t wmiir xwrite /ctl view $(wi_tags | wi_menu) & Key $MODKEY-Return eval $WMII_TERM & Key $MODKEY-w wmiir xwrite /ctl view www Key $MODKEY-x wmiir xwrite /ctl view dev Key $MODKEY-o wmiir xwrite /ctl view "$(read_tags | next_tag)" Key $MODKEY-i wmiir xwrite /ctl view "$(read_tags | tac | next_tag)" Key $MODKEY-Shift-space wmiir xwrite /tag/sel/ctl send sel toggle Key $MODKEY-f wmiir xwrite /client/sel/ctl Fullscreen toggle Key $MODKEY-Shift-c wmiir xwrite /client/sel/ctl kill Key $MODKEY-Shift-t wmiir xwrite "/client/$(wmiir read /client/sel/ctl)/tags" $(wi_tags | wi_menu) & Key $MODKEY-$LEFT wmiir xwrite /tag/sel/ctl select left Key $MODKEY-$RIGHT wmiir xwrite /tag/sel/ctl select right Key $MODKEY-$DOWN wmiir xwrite /tag/sel/ctl select down Key $MODKEY-$UP wmiir xwrite /tag/sel/ctl select up Key $MODKEY-Shift-$LEFT wmiir xwrite /tag/sel/ctl send sel left Key $MODKEY-Shift-$RIGHT wmiir xwrite /tag/sel/ctl send sel right Key $MODKEY-Shift-$DOWN wmiir xwrite /tag/sel/ctl send sel down Key $MODKEY-Shift-$UP wmiir xwrite /tag/sel/ctl send sel up ! # used by others of my functions as well by now cur_tag() { wmiir read /tag/sel/ctl | head -n 1 } read_tags() { wmiir ls /tag | sed '\,^sel/$,d;s,/,,' } next_tag() { awk -v 'curtag='"$(wmiir read /tag/sel/ctl | head -n 1)" ' NR==1 {first = $0} $0==curtag {if (getline) print $0; else print first; exit}' } switch_tags() { CURTAG="$(cur_tag)" if [ "$CURTAG" = "t" ]; then PREVTAG="$(cat ~/.wmii-3.5/prevtag)" wmiir xwrite /ctl view "$PREVTAG" else echo "$CURTAG" > ~/.wmii-3.5/prevtag wmiir xwrite /ctl view t fi } # WM Configuration wmiir write /ctl <<! view 1 font $WMII_FONT focuscolors $WMII_FOCUSCOLORS normcolors $WMII_NORMCOLORS grabmod $MODKEY border 1 ! xsetroot -solid "$WMII_BACKGROUND" & # xloadimage -onroot ~/wallpaper/field.png export WMII_MENU WMII_9MENU WMII_FONT WMII_TERM WMII_BROWSER export WMII_FOCUSCOLORS WMII_SELCOLORS WMII_NORMCOLORS # Misc progsfile="$(wmiir namespace)/.proglist" Action status & wi_proglist $PATH >$progsfile & # Setup Tag Bar OIFS="$IFS"; IFS="$wi_nl" wmiir rm $(wmiir ls /lbar | sed 's,^,/lbar/,') seltag=$(wmiir read /tag/sel/ctl | sed 1q) IFS="$OIFS" wi_tags | while read tag do if [ "$tag" = "$seltag" ]; then echo "$WMII_FOCUSCOLORS" "$tag" else echo "$WMII_NORMCOLORS" "$tag" fi | wmiir create "/lbar/$tag" done wi_eventloop