#!/bin/dash -f # Configure wmii wmiiscript=wmiirc # For wmii.sh . wmii.sh # Configuration Variables MODKEY=Mod1 UP=k DOWN=j LEFT=h RIGHT=l # Bars noticetimeout=5 noticebar=/rbar/!notice # Colors tuples: " " export WMII_NORMCOLORS='#ffffff #0b0c2c #333333' export WMII_FOCUSCOLORS='#ffffff #000000 #333333' export WMII_BACKGROUND='#000000' export WMII_LOWBATTERYCOLORS='#ffffff #ff0000 #333333' export WMII_FONT='-*-fixed-medium-r-*-*-13-*-*-*-*-*-*-*' set -- $(echo $WMII_NORMCOLORS $WMII_FOCUSCOLORS) export WMII_TERM="urxvt" if ! test -d "${WMII_CONFPATH%%:*}"; then mkdir "${WMII_CONFPATH%%:*}" res=$(wihack -type DIALOG xmessage -nearmouse -buttons Windows,Alt -print -fn $WMII_FONT \ "Welcome to wmii,$wi_newline$wi_newline" \ "Most of wmii's default key bindings make use of the$wi_newline" \ "Windows key, or equivalent. For keyboards lacking such$wi_newline" \ "a key, many users change this to the Alt key.$wi_newline$wi_newline" \ "Which would you prefer?") [ "$res" = "Alt" ] && MODKEY=Mod1 echo "MODKEY=$MODKEY" >"${WMII_CONFPATH%%:*}/wmiirc_local" chmod +x "${WMII_CONFPATH%%:*}/wmiirc_local" fi echo "bar on bottom" | wmiir write /ctl mp_watcher 2> /dev/null & bat_watcher 2> /dev/null & # Menu history hist="${WMII_CONFPATH%%:*}/history" histnum=5000 # Column Rules wmiir write /colrules < 17+83+41 /.*/ -> 62+38 # Golden Ratio ! # Tagging Rules wmiir write /tagrules < ~ /terminal/ -> sel # Ignore terminal window groups. ! local_events() { true;} wi_runconf -s wmiirc_local echo $WMII_NORMCOLORS | wmiir create $noticebar # Event processing events() { cat <<'!' # 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 Unresponsive { client=$1; shift msg="The following client is not responding. What would you like to do?$wi_newline" resp=$(wihack -transient $client \ xmessage -nearmouse -buttons Kill,Wait -print -fn "${WMII_FONT%%,*}" "$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 = $! # Menus Menu Client-3-Delete wmiir xwrite /client/$1/ctl kill Menu Client-3-Kill wmiir xwrite /client/$1/ctl slay Menu Client-3-Fullscreen wmiir xwrite /client/$1/ctl Fullscreen on Event ClientMouseDown wi_fnmenu Client $2 $1 & Menu LBar-3-Delete tag=$1; clients=$(wmiir read "/tag/$tag/index" | awk '/[^#]/{print $2}') for c in $clients; do if [ "$tag" = "$(wmiir read /client/$c/tags)" ]; then wmiir xwrite /client/$c/ctl kill else wmiir xwrite /client/$c/tags -$tag fi if [ "$tag" = "$(wi_seltag)" ]; then newtag=$(wi_tags | awk -v't='$tag ' $1 == t { if(!l) getline l print l exit } { l = $0 }') wmiir xwrite /ctl view $newtag fi done Event LeftBarMouseDown wi_fnmenu LBar "$@" & # Actions Action showkeys echo "$KeysHelp" | xmessage -file - -fn ${WMII_FONT%%,*} Action quit wmiir xwrite /ctl quit Action exec wmiir xwrite /ctl exec "$@" Action rehash wi_proglist $PATH >$progsfile Action action_date set +xv if wmiir remove /rbar/99 2>/dev/null; then sleep 2 fi echo "$WMII_NORMCOLORS" | wmiir create /rbar/99date while echo -n $(date '+%D -- %I:%M %p') | wmiir write /rbar/99date; do sleep 1 done # Key Bindings KeyGroup Multimedia Key XF86AudioRaiseVolume amixer -q -- set Master 05%+ & Key XF86AudioLowerVolume amixer -q -- set Master 05%- & Key $MODKEY-Control-0 amixer -q -- set Master 05%+ & Key $MODKEY-Control-9 amixer -q -- set Master 05%- & Key XF86AudioMute amixer -q -- set Master toggle & Key XF86HomePage firefox & Key Pause mplayer_control pause & Key $MODKEY-Shift-Right mplayer_control "seek +5 0" & Key $MODKEY-Shift-Left mplayer_control "seek -5 0" & Key $MODKEY-Shift-Up mplayer_control "seek +60 0" & Key $MODKEY-Shift-Down mplayer_control "seek -60 0" & Key $MODKEY-Shift-Prior mplayer_control "seek +600 0" & Key $MODKEY-Shift-Next mplayer_control "seek -600 0" & Key $MODKEY-KP_Right mplayer_control "pt_step +1" & Key $MODKEY-KP_Left mplayer_control "pt_step -1" & Key Scroll_Lock lock & Key XF86PowerOff lock & Key XF86Calculator xterm calc & KeyGroup Moving around Key $MODKEY-$LEFT # Select the client to the left wmiir xwrite /tag/sel/ctl select left Key $MODKEY-$RIGHT # Select the client to the right wmiir xwrite /tag/sel/ctl select right Key $MODKEY-$UP # Select the client above wmiir xwrite /tag/sel/ctl select up Key $MODKEY-$DOWN # Select the client below wmiir xwrite /tag/sel/ctl select down Key $MODKEY-space # Toggle between floating and managed layers wmiir xwrite /tag/sel/ctl select toggle KeyGroup Moving through stacks Key $MODKEY-Control-$UP # Select the stack above wmiir xwrite /tag/sel/ctl select up stack Key $MODKEY-Control-$DOWN # Select the stack below wmiir xwrite /tag/sel/ctl select down stack KeyGroup Moving clients around Key $MODKEY-Shift-$LEFT # Move selected client to the left wmiir xwrite /tag/sel/ctl send sel left Key $MODKEY-Shift-$RIGHT # Move selected client to the right wmiir xwrite /tag/sel/ctl send sel right Key $MODKEY-Shift-$UP # Move selected client up wmiir xwrite /tag/sel/ctl send sel up Key $MODKEY-Shift-$DOWN # Move selected client down wmiir xwrite /tag/sel/ctl send sel down Key $MODKEY-Shift-space # Toggle selected client between floating and managed layers wmiir xwrite /tag/sel/ctl send sel toggle KeyGroup Client actions Key $MODKEY-f # Toggle selected client's fullsceen state wmiir xwrite /client/sel/ctl Fullscreen toggle Key $MODKEY-Shift-c # Close client wmiir xwrite /client/sel/ctl kill KeyGroup Changing column modes Key $MODKEY-d # Set column to default mode wmiir xwrite /tag/sel/ctl colmode sel default-max Key $MODKEY-s # Set column to stack mode wmiir xwrite /tag/sel/ctl colmode sel stack-max Key $MODKEY-m # Set column to max mode wmiir xwrite /tag/sel/ctl colmode sel stack+max KeyGroup Running programs Key $MODKEY-a # Open wmii actions menu action $(wi_actions | wimenu -h "${hist}.actions" -n $histnum) & Key $MODKEY-p # Open program menu eval wmiir setsid "$(wimenu -h "${hist}.progs" -n $histnum <$progsfile)" & Key $MODKEY-Return # Launch a terminal eval wmiir setsid $WMII_TERM & KeyGroup Other Key $MODKEY-Control-t # Toggle all other key bindings 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 KeyGroup Tag actions Key $MODKEY-t # Change to another tag (tag=$(wi_tags | wimenu -h "${hist}.tags" -n 50) && wmiir xwrite /ctl view $tag) & Key $MODKEY-Shift-t # Retag the selected client c=$(wi_selclient) (tag=$(wi_tags | wimenu -h "${hist}.tags" -n 50) && wmiir xwrite /client/$c/tags $tag) & ! for i in 0 1 2 3 4 5 6 7 8 9; do cat <$progsfile & # Setup Tag Bar IFS="$wi_newline" wmiir rm $(wmiir ls /lbar | sed 's,^,/lbar/,') >/dev/null seltag=$(wmiir read /tag/sel/ctl | sed 1q) unset IFS 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