From 7b7b70fa7f4a6bcb304683a9630eaa6eab75ec89 Mon Sep 17 00:00:00 2001 From: Don Armstrong Date: Fri, 6 Jul 2007 10:09:26 +0000 Subject: [PATCH] use wmii by default --- .wmii-3.5 | 1 + .wmii/rc.wmii | 254 ++++++++++++++++++++++++++++++++++++++++++++++++++ .wmii/welcome | 56 +++++++++++ .wmii/wmiirc | 237 ++++++++++++++++++++++++++++++++++++++++++++++ .xsession | 4 +- 5 files changed, 551 insertions(+), 1 deletion(-) create mode 120000 .wmii-3.5 create mode 100755 .wmii/rc.wmii create mode 100755 .wmii/welcome create mode 100755 .wmii/wmiirc diff --git a/.wmii-3.5 b/.wmii-3.5 new file mode 120000 index 0000000..022038d --- /dev/null +++ b/.wmii-3.5 @@ -0,0 +1 @@ +.wmii \ No newline at end of file diff --git a/.wmii/rc.wmii b/.wmii/rc.wmii new file mode 100755 index 0000000..439f256 --- /dev/null +++ b/.wmii/rc.wmii @@ -0,0 +1,254 @@ +#!/usr/bin/env wmii9rc +# WMII Configuration + +oldpath=$path +path=($PLAN9/bin $path) + +MODKEY=Mod4 +UP=k +DOWN=j +LEFT=h +RIGHT=l + +WMII_FONT='fixed' +WMII_NORMCOLORS=('#222222' '#5FBF77' '#2A7F3F') +WMII_FOCUSCOLORS=('#ffffff' '#153F1F' '#2A7F3F') +WMII_BACKGROUND='#333333' + +WMII_TERM=(xterm) + +fn wmiimenu { + dmenu -b -fn $WMII_FONT \ + -nf $WMII_NORMCOLORS(1) -nb $WMII_NORMCOLORS(2) \ + -sf $WMII_FOCUSCOLORS(1) -sb $WMII_FOCUSCOLORS(2) +} + +fn 9menu { + wmii9menu -font $WMII_FONT \ + -^(nf nb br)^$WMII_NORMCOLORS \ + -^(sf sb br)^$WMII_FOCUSCOLORS $* +} + +fn config_whatis { + confpath=`{echo $WMII_CONFPATH | sed 'y/:/ /'} + prog=$1; shift + echo `{{path=$confpath whatis $prog} | grep -v '=|^fn '} $* +} + +if(echo $0 | grep -vs '/rc.wmii$') { + echo Fatal: This file should only be run as rc.wmii >[1=2] + exit badname +} + +if(! test -x $PLAN9/bin/read) { + echo 'Can''t find the ''read'' command' >[1=2] + xmessage -file - <<'!' + exec `{config_whatis wmiirc} +} +rc.wmii can't run: + You have a Plan 9 utilities installed, but are missing the 'read' command. + This likely means that you have an out-of-date 9base installed. + +wmiirc will be run instead. +! + +# Source Variables, &c +local = `{config_whatis rc.wmii.local} +. <{awk '//; /^# Overrides/ { exit }' $local 60+40 +! + +# Tagging Rules +wmiir write /tagrules < ~ +/MPlayer.*/ -> ~ +/.*/ -> ! +/.*/ -> 1 +! + +# Status Bar Info +fn status { + echo -n `{uptime | sed 's/.*://; s/,//g'} '|' `{date} +} + +# View Titles +fn viewtitle { echo $* } + +# Events +fn Event-Start { + switch($1) { + case wmiirc + rm -f $progs_file + exit + } +} + +fn Event-Key { eval Key-$1 $1 } + +fn Event-CreateTag { echo $WMII_NORMCOLORS `{viewtitle $*} | wmiir create /lbar/$"* } +fn Event-DestroyTag { wmiir remove /lbar/$"* } +fn Event-FocusTag { wmiir xwrite /lbar/$"* $WMII_FOCUSCOLORS `{viewtitle $*} } +fn Event-UnfocusTag { wmiir xwrite /lbar/$"* $WMII_NORMCOLORS `{viewtitle $*} } +fn Event-UrgentTag { shift; wmiir xwrite /lbar/$"* '*'$"* } +fn Event-NotUrgentTag { shift; wmiir xwrite /lbar/$"* $"* } + +fn Event-LeftBarClick { shift; wmiir xwrite /ctl view $* } + +menulast = '' +fn Event-ClientMouseDown { + client = $1; button = $2 + if(~ $button 3) { + do=`{9menu -initial $menulast Nop Delete} + switch($do) { + case Delete + wmiir xwrite /client/$client/ctl kill + } + if(! ~ $#do 0) + menulast = $do; + } +} + +# Actions +fn Action { + action=$1; shift + if(whatis Action-$action | grep -s '^fn ') { + Action-$action $* & + };if not { + run_command `{config_whatis $action} $* & + } +} +fn Action-rehash { proglist $PATH >$progs_file } +fn Action-quit { wmiir xwrite /ctl quit } +fn Action-status { + flag x - + flag r - + if(wmiir remove /rbar/status >[2]/dev/null) + sleep 2 + echo $WMII_NORMCOLORS | wmiir create /rbar/status + while(status | wmiir write /rbar/status) + sleep 1 +} + +# Key Bindings +fn Key-$MODKEY-Control-t { + switch(`{wmiir read /keys | wc -l}) { + case 0 1 + initkeys + wmiir xwrite /ctl grabmod $MODKEY + case * + wmiir xwrite /keys $MODKEY-Control-t + wmiir xwrite /ctl grabmod Mod3 + } +} + +fn Key-$MODKEY-$LEFT { wmiir xwrite /tag/sel/ctl select left } +fn Key-$MODKEY-$RIGHT { wmiir xwrite /tag/sel/ctl select right } +fn Key-$MODKEY-$DOWN { wmiir xwrite /tag/sel/ctl select down } +fn Key-$MODKEY-$UP { wmiir xwrite /tag/sel/ctl select up } + +fn Key-$MODKEY-Shift-$LEFT { wmiir xwrite /tag/sel/ctl send sel left } +fn Key-$MODKEY-Shift-$RIGHT { wmiir xwrite /tag/sel/ctl send sel right } +fn Key-$MODKEY-Shift-$DOWN { wmiir xwrite /tag/sel/ctl send sel down } +fn Key-$MODKEY-Shift-$UP { wmiir xwrite /tag/sel/ctl send sel up } + +fn Key-$MODKEY-space { wmiir xwrite /tag/sel/ctl select toggle } +fn Key-$MODKEY-Shift-space { wmiir xwrite /tag/sel/ctl send sel toggle } + +fn Key-$MODKEY-d { wmiir xwrite /tag/sel/ctl colmode sel default } +fn Key-$MODKEY-s { wmiir xwrite /tag/sel/ctl colmode sel stack } +fn Key-$MODKEY-m { wmiir xwrite /tag/sel/ctl colmode sel max } + +fn Key-$MODKEY-Shift-c { wmiir xwrite /client/sel/ctl kill } + +fn Key-$MODKEY-a { Action `{actionlist | wmiimenu} & } +fn Key-$MODKEY-p { run_command `{wmiimenu <$progs_file} & } +fn Key-$MODKEY-Return { run_command $WMII_TERM & } +fn Key-$MODKEY-t { wmiir xwrite /ctl view `{read_tags | wmiimenu} & } +fn Key-$MODKEY-Shift-t { + wmiir xwrite /client/`{wmiir read /client/sel/ctl}^/tags `{read_tags | wmiimenu} & +} + +for(i in `{seq 0 9}) { + fn Key-$MODKEY-$i { wmiir xwrite /ctl view `{echo $1 | sed 's/.*-//'} } + fn Key-Shift-$MODKEY-$i {wmiir xwrite /client/sel/tags `{echo $1 | sed 's/.*-//'} } +} + +# Functions +fn proglist { + /bin/ls -lL `{echo $* | sed 'y/:/ /'} >[2]/dev/null \ + | awk '$1 ~ /^[^d].*x/ { print $NF }' \ + | sort | uniq +} + +fn getfuns { + env | sed -n 's/^fn#'^$1^'-([^=]+).*/\1/p' +} + +fn actionlist { + { proglist $WMII_CONFPATH + getfuns Action + } | sort | uniq +} + +fn initkeys { + getfuns Key | wmiir write /keys +} + +fn read_tags { + wmiir ls /tag | sed 's,/,,; /^sel$/d' +} + +fn run_command { + @{ rfork ns + path=$oldpath + eval exec $* + } +} + +# WM Configuration +wmiir write /ctl <$progs_file & + +# Tag Bar Setup +ifs='# +'{ for(bar in `{comm -23 <{wmiir ls /lbar} <{read_tags}}) + wmiir remove /lbar/$bar + seltag=`{wmiir read /tag/sel/ctl} + for(tag in `{read_tags}) { + if(~ $tag $seltag) + echo $WMII_FOCUSCOLORS `{viewtitle $tag} | wmiir create /lbar/$tag + if not + echo $WMII_NORMCOLORS `{viewtitle $tag} | wmiir create /lbar/$tag + } +} + +# Keygrab Setup +initkeys + +if(echo Start wmiirc | ! wmiir write /event >[2]/dev/null) + exit 1 + +# Event Loop +wmiir read /event | + while(*=`{read}) { + event = $1; shift + Event-$event $* + } >[2]/dev/null . +EOF diff --git a/.wmii/wmiirc b/.wmii/wmiirc new file mode 100755 index 0000000..fee8983 --- /dev/null +++ b/.wmii/wmiirc @@ -0,0 +1,237 @@ +#!/bin/sh -f +# Configure wmii + +# Configuration Variables +MODKEY=Mod4 +UP=k +DOWN=j +LEFT=h +RIGHT=l + +# Colors tuples: " " +WMII_NORMCOLORS='#222222 #5FBF77 #2A7F3F' +WMII_FOCUSCOLORS='#ffffff #153F1F #2A7F3F' + +WMII_BACKGROUND='#333333' +WMII_FONT='-*-fixed-medium-r-*-*-15-*-*-*-*-*-*-*' + +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="x-terminal-emulator" + +# Column Rules +wmiir write /colrules < 58+42 +! + +# Tagging Rules +wmiir write /tagrules < ~ +/.*/ -> ! +/.*/ -> 1 +! + +# Status Bar Info +status() { + echo -n $(uptime | sed 's/.*://; s/,//g') '|' $(date) +} + +# Event processing +# Processed later by `wmiiloop' and evaled. +# Duplicate the eval line and replace 'eval' with 'echo' for details. +eventstuff() { + cat <<'!' + # Events + Event Start + case "$1" in + wmiirc) + exit; + esac + Event Key + fn=$(echo "$@" | sed 's/[^a-zA-Z_0-9]/_/g') + Key_$fn "$@" + 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 + shift + wmiir xwrite /ctl view "$@" + # Actions + Action quit + wmiir xwrite /ctl quit + Action rehash + proglist $PATH >$progsfile + Action status + set +xv + if wmiir remove /rbar/status 2>/dev/null; then + sleep 2 + fi + echo "$WMII_NORMCOLORS" | wmiir create /rbar/status + while status | wmiir write /rbar/status; do + sleep 1 + done + Event ClientMouseDown + client=$1; button=$2 + case "$button" in + 3) + do=$($WMII_9MENU -initial "${menulast:-SomeRandomName}" Nop Delete) + case "$do" in + Delete) + wmiir xwrite /client/$client/ctl kill + esac + menulast=${do:-"$menulast"} + esac + # Key Bindings + Key $MODKEY-Control-t + case $(wmiir read /keys | wc -l | tr -d ' \t\n') in + 0|1) + echo -n \$Keys | tr ' ' '\012' | wmiir write /keys + wmiir xwrite /ctl grabmod $MODKEY;; + *) + wmiir xwrite /keys $MODKEY-Control-t + wmiir xwrite /ctl grabmod Mod3;; + esac + 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 $(actionlist | $WMII_MENU) & + Key $MODKEY-p + sh -c "$($WMII_MENU <$progsfile)" & + Key $MODKEY-t + wmiir xwrite /ctl "view $(tagsmenu)" & + Key $MODKEY-Return + $WMII_TERM & + Key $MODKEY-Shift-space + wmiir xwrite /tag/sel/ctl send sel toggle + Key $MODKEY-Shift-c + wmiir xwrite /client/sel/ctl kill + Key $MODKEY-Shift-t + wmiir xwrite "/client/$(wmiir read /client/sel/ctl)/tags" "$(tagsmenu)" & + 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 +! + for i in 0 1 2 3 4 5 6 7 8 9; do + cat <> ~/.eventstuff +eval "$(eventstuff | sed 's/^[ ]//' | { . wmiiloop; })" + +# Functions +Action() { + action=$1; shift + if [ -n "$action" ]; then + Action_$action "$@" \ + || conf_which $action "$@" + fi +} + +proglist() { + paths=$(echo "$@" | sed 'y/:/ /') + ls -lL $paths 2>/dev/null \ + | awk '$1 ~ /^[^d].*x/ { print $NF }' \ + | sort | uniq +} + +# Misc +progsfile="$WMII_NS_DIR/.proglist" +Action status & +proglist $PATH >$progsfile & + +xsetroot -solid "$WMII_BACKGROUND" & + +export WMII_MENU WMII_9MENU WMII_FONT WMII_TERM +export WMII_FOCUSCOLORS WMII_SELCOLORS WMII_NORMCOLORS + +# Setup Tag Bar +wmiir ls /lbar | +while read bar; do + wmiir remove "/lbar/$bar" +done +seltag="$(wmiir read /tag/sel/ctl 2>/dev/null)" +wmiir ls /tag | sed -e 's|/||; /^sel$/d' | +while read tag; do + if [ "X$tag" = "X$seltag" ]; then + echo "$WMII_FOCUSCOLORS" "$tag" | wmiir create "/lbar/$tag" + else + echo "$WMII_NORMCOLORS" "$tag" | wmiir create "/lbar/$tag" + fi +done + +# More functions +tagsmenu() { + wmiir ls /tag | sed 's|/||; /^sel$/d' | $WMII_MENU +} + +actionlist() { + { proglist $WMII_CONFPATH + echo -n $Actions | tr ' ' '\012' + } | sort | uniq +} + +conf_which() { + which=$(which which) + prog=$(PATH="$WMII_CONFPATH" $which $1) + shift + if [ -n "$prog" ]; then + $prog + fi +} + +# Stop any running instances of wmiirc +echo Start wmiirc | wmiir write /event || exit 1 + +wmiir read /event | +while read event; do + set -- $event + event=$1; shift + Event_$event $@ +done 2>/dev/null diff --git a/.xsession b/.xsession index a7f71e5..96cb8e8 100755 --- a/.xsession +++ b/.xsession @@ -41,7 +41,9 @@ if [ -x /usr/bin/xscreensaver -a -e ~/.xscreensaver ]; then /usr/bin/xscreensaver & fi; -if [ -x /usr/bin/ion3 ]; then +if [ -x /usr/bin/wmii ]; then + exec /usr/bin/wmii; +elif [ -x /usr/bin/ion3 ]; then exec /usr/bin/ion3; elif [ -x /usr/bin/openbox ]; then exec /usr/bin/openbox; -- 2.39.2