]> git.donarmstrong.com Git - x_base.git/commitdiff
use wmii by default
authorDon Armstrong <don@donarmstrong.com>
Fri, 6 Jul 2007 10:09:26 +0000 (10:09 +0000)
committerDon Armstrong <don@donarmstrong.com>
Fri, 6 Jul 2007 10:09:26 +0000 (10:09 +0000)
.wmii-3.5 [new symlink]
.wmii/rc.wmii [new file with mode: 0755]
.wmii/welcome [new file with mode: 0755]
.wmii/wmiirc [new file with mode: 0755]
.xsession

diff --git a/.wmii-3.5 b/.wmii-3.5
new file mode 120000 (symlink)
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 (executable)
index 0000000..439f256
--- /dev/null
@@ -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 </dev/null}
+
+# Column Rules
+wmiir write /colrules <<!
+/./ -> 60+40
+!
+
+# Tagging Rules
+wmiir write /tagrules <<!
+/XMMS.*/ -> ~
+/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 <<!
+grabmod $MODKEY
+border 2
+font $WMII_FONT
+focuscolors $WMII_FOCUSCOLORS
+normcolors $WMII_NORMCOLORS
+!
+xsetroot -solid $WMII_BACKGROUND
+
+# Source Overrides
+. <{awk '/^# Overrides/, 0' $local </dev/null}
+
+# Misc Setup
+Action status &
+progs_file=$WMII_NS_DIR/proglist.$pid
+proglist $PATH >$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 </dev/null
+
diff --git a/.wmii/welcome b/.wmii/welcome
new file mode 100755 (executable)
index 0000000..6b31f8b
--- /dev/null
@@ -0,0 +1,56 @@
+#!/bin/sh
+# display a welcome message that contains the wmii tutorial
+
+xmessage -file - <<'EOF'
+Welcome to wmii, the non-wimp environment of the Suckless Project.
+
+This is a small step by step tutorial, intended to make you a
+little bit familiar with wmii.
+
+From here on, keypresses will be described such that M-a refers to
+pressing $MODKEY and a at the same time. $MODKEY refers to a
+configuratin variable which contains the Alt key by default.
+
+Let's go!
+
+- Start two xterms by pressing M-Return twice.
+- Switch between the three windows: M-j, M-k,
+  M-h, M-l
+  If you prefer to use the mouse, then just move the pointer to
+  the desired window.
+- Try the other column modes: M-s for stack mode,
+  M-m for max mode Press M-d to return to default
+  mode.
+- Create a new column with: M-Shift-l
+  This moves the client rightwards.
+- Tag the selected client with another tag: M-Shift-2
+  IMPORTANT: before you do the next step, note that you
+    can select the current tag with M-1.
+- Select the new tag: M-2
+- Select the floating area: M-Space
+- Open the programs menu: M-p
+  Type 'xclock' and press Enter.
+- Move the xclock window: Hold $MODKEY, left-click on the
+  window and move the cursor around.
+- Resize the xclock window: Hold $MODKEY, right-click the
+  window and move the cursor around.
+- Open the actions menu: M-a
+  Rerun wmiirc by selecting 'wmiirc'.
+- We'll now have a look at the internal filesystem used by
+  wmii.  Executing
+       wmiir ls /
+  in the shell of the terminal will list all the files in the
+  root directory.
+  Entries ending with / are directories.
+  If you are curious, you can now dig deeper into the
+  directory trees. For instance,
+       wmiir ls /rbar/
+  will show you the content of the right half of the bar.
+
+We hope that these steps gave you an idea of how wmii works.
+You can reread them at any time by pressing $MODKEY-a and
+selecting 'welcome'.
+
+You should now take a look at the wmii(1) man page.  A FAQ is
+available at <http://wmii.suckless.org>.
+EOF
diff --git a/.wmii/wmiirc b/.wmii/wmiirc
new file mode 100755 (executable)
index 0000000..fee8983
--- /dev/null
@@ -0,0 +1,237 @@
+#!/bin/sh -f
+# Configure wmii
+
+# Configuration Variables
+MODKEY=Mod4
+UP=k
+DOWN=j
+LEFT=h
+RIGHT=l
+
+# Colors tuples: "<text> <background> <border>"
+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 <<!
+/MPlayer.*/ -> ~
+/.*/ -> !
+/.*/ -> 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 <<!
+       Key $MODKEY-$i
+               wmiir xwrite /ctl view "$i"
+       Key $MODKEY-Shift-$i
+               wmiir xwrite /client/sel/tags "$i"
+!
+       done
+}
+
+# WM Configuration
+wmiir write /ctl << EOF
+font $WMII_FONT
+focuscolors $WMII_FOCUSCOLORS
+normcolors $WMII_NORMCOLORS
+grabmod $MODKEY
+border 1
+EOF
+
+# Feed events to `wmiiloop' for processing
+echo "$(eventstuff | sed 's/^[ ]//' )" >> ~/.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
index a7f71e5dce1d759524a92f7607c961a53e36c65d..96cb8e8c5d65a487ea4ae18933aee7f77dac8623 100755 (executable)
--- 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;