wmiirc-rumai

git clone git://oldgit.suckless.org/wmiirc-rumai/
Log | Files | Refs | README | LICENSE

commit e9bde7ca1a091270ebe26fa4af7f5f21d7c71ba8
Author: Suraj N. Kurapati <sunaku@gmail.com>
Date:   Sun,  6 Aug 2006 18:26:36 -0700

[project @ afcf35063d12431de17f427dc140698bdd52c380]

[project @ 1]
import	BASH based config for wmii-3

Diffstat:
.hgignore | 2++
wmiirc | 263+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 265 insertions(+), 0 deletions(-)

diff --git a/.hgignore b/.hgignore @@ -0,0 +1,2 @@ +(^|/)\.svn($|/) +(^|/)\.hg($|/) diff --git a/wmiirc b/wmiirc @@ -0,0 +1,263 @@ +#!/bin/sh +# configure wmii + +xwrite() { + file="$1"; shift + echo -n "$@" | wmiir write "$file" +} + +proglist() { + ls -lL "$@" 2>/dev/null | awk 'NF>2 && $1 ~ /^[^d].*x/ {print $NF}' | sort -u +} + +# Cycles through all available workspaces (the tags shown as buttons on wmiibar). +# @param . 'next' or 'prev' +cycleWs() { + # gather a list of available workspaces + local list=( $( wmiir read /tags | sort ) ) # sort because tags shown on wmiibar are sorted + local listLen=${#list[@]} + local listIndexMax=$(( listLen - 1 )) + + + # determine current workspace + local ws=$(wmiir read /view/name) + + local wsIndex=0 i + for i in $( seq 0 $listIndexMax ); do + if test "${list[$i]}" = "$ws"; then + wsIndex=$i + break + fi + done + + + # determine new workspace + local wsIndexNext=$(( (wsIndex + 1) % listLen )) + + local wsIndexPrev=$(( wsIndex - 1 )) + (( wsIndexPrev < 0 )) && wsIndexPrev=$listIndexMax + + + # cycle to new workspace + local wsIndexNew + + case "$1" in + next) + wsIndexNew=$wsIndexNext ;; + prev) + wsIndexNew=$wsIndexPrev ;; + *) + wsIndexNew=$wsIndex ;; + esac + + xwrite /ctl view "${list[$wsIndexNew]}" +} + + +MODKEY=Mod1 +UP=t +DOWN=n +LEFT=h +RIGHT=s + +#WMII_FONT='-xos4-terminus-medium-r-normal--16-*-*-*-*-*-*-*' +WMII_FONT='-misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1' +WMII_SELCOLORS='#ffffff #285577 #4c7899' +WMII_NORMCOLORS='#222222 #eeeeee #666666' +# dark background +#WMII_NORMCOLORS='#e0e0e0 #0a0a0a #202020' + +export WMII_FONT WMII_NORMCOLORS WMII_SELCOLORS + +# give wmiiwm a chance to start +while : +do + echo Start wmiirc | wmiir write /event >/dev/null 2>&1 && break + sleep 1 +done + +# WM CONFIGURATION +xwrite /def/border 2 +xwrite /def/font $WMII_FONT +xwrite /def/selcolors $WMII_SELCOLORS +xwrite /def/normcolors $WMII_NORMCOLORS +xwrite /def/colmode default +xwrite /def/colwidth 0 + +# TAGGING RULES +wmiir write /def/rules <<EOF +/QEMU.*/ -> ~ +/jEdit.*/ -> ~ +/.*thunderbird.*/ -> mail +/XMMS.*/ -> ~ +/Gimp.*/ -> ~ +/MPlayer.*/ -> ~ +/DOSBox.*/ -> ~ +/.*/ -> ! +/.*/ -> 1 +EOF +#/Firefox.*/ -> web + +# MISC +xsetroot -solid '#333333' +status & +PROGS_FILE=/tmp/.wmiimenu.$USER.progs +proglist `echo "$PATH" | tr : ' '` >$PROGS_FILE & + +# SHORTCUTS +SELECT=$MODKEY-Control- +SEND=${SELECT}m, +SWAP=${SELECT}w, +LAYOUT=${SELECT}z, +MENU=${SELECT} +PROG=${SELECT} + +xwrite /def/grabmod $MODKEY +wmiir write /def/keys <<EOF +${SELECT}${LEFT} +${SELECT}${RIGHT} +${SELECT}${DOWN} +${SELECT}${UP} +${SELECT}space +${LAYOUT}w +${LAYOUT}z +${LAYOUT}v +${LAYOUT}m +${MENU}i +${MENU}e +${MENU}u +${SELECT}0 +${SELECT}1 +${SELECT}2 +${SELECT}3 +${SELECT}4 +${SELECT}5 +${SELECT}6 +${SELECT}7 +${SELECT}8 +${SELECT}9 +${PROG}x +${SEND}${LEFT} +${SEND}${RIGHT} +${SEND}space +${SEND}Delete +${SEND}t +${SEND}0 +${SEND}1 +${SEND}2 +${SEND}3 +${SEND}4 +${SEND}5 +${SEND}6 +${SEND}7 +${SEND}8 +${SEND}9 +${SWAP}${LEFT} +${SWAP}${RIGHT} +${SWAP}${DOWN} +${SWAP}${UP} + +${SELECT}comma +${SELECT}period +${MENU}a +${PROG}k +${PROG}j +${SELECT}Return +EOF + +# EVENT LOOP +wmiir read /event 2>/dev/null | +while read event +do + set -- $event + type="$1"; shift + case "$type" in + Start) + if test wmiirc = "$1" + then + exit + fi;; + BarClick) + xwrite /ctl view "$1";; + Key) + case "$1" in + ${SELECT}${LEFT}) + xwrite /view/ctl select prev;; + ${SELECT}${RIGHT}) + xwrite /view/ctl select next;; + ${SELECT}${DOWN}) + xwrite /view/sel/ctl select next;; + ${SELECT}${UP}) + xwrite /view/sel/ctl select prev;; + ${SELECT}space) + xwrite /view/ctl select toggle;; + ${LAYOUT}w) + xwrite /view/sel/mode default;; + ${LAYOUT}v) + xwrite /view/sel/mode stack;; + ${LAYOUT}m) + xwrite /view/sel/mode max;; + ${LAYOUT}z) + xwrite /view/0/sel/geom 0 0 east south;; + ${MENU}i) + PATH=$HOME/.wmii-3:/home/sun/dry/apps/wmii/etc/wmii-3:$PATH `proglist /home/sun/dry/apps/wmii/etc/wmii-3 $HOME/.wmii-3 | wmiimenu` &;; + ${MENU}e) + `wmiimenu <$PROGS_FILE` &;; + ${MENU}u) + xwrite /ctl view "`wmiir read /tags | wmiimenu`" &;; + ${SELECT}[0-9]) + xwrite /ctl view `echo $1 | sed 's/.*-//'`;; + ${PROG}x) + terminal &;; + ${SEND}${LEFT}) + xwrite /view/sel/sel/ctl sendto prev;; + ${SEND}${RIGHT}) + xwrite /view/sel/sel/ctl sendto next;; + ${SEND}space) + xwrite /view/sel/sel/ctl sendto toggle;; + ${SEND}Delete) + xwrite /view/sel/sel/ctl kill;; + ${SEND}t) + tags=$(wmiir read /tags) + tags_csv=`echo $tags | tr ' ' ','` + tags_joined=`eval "echo {$tags_csv}+{$tags_csv}"` + xwrite /view/sel/sel/tags "`echo $tags $tags_joined | fmt -1 | wmiimenu`" &;; + ${SEND}[0-9]) + xwrite /view/sel/sel/tags `echo $1 | sed 's/.*[-,]//'`;; + ${SWAP}${LEFT}) + xwrite /view/sel/sel/ctl swap prev;; + ${SWAP}${RIGHT}) + xwrite /view/sel/sel/ctl swap next;; + ${SWAP}${DOWN}) + xwrite /view/sel/sel/ctl swap down;; + ${SWAP}${UP}) + xwrite /view/sel/sel/ctl swap up;; + + ${SELECT}comma) + cycleWs prev;; + ${SELECT}period) + cycleWs next;; + ${MENU}a) + # go to a client by choosing it from a menu + ( + choice=$( + { + for i in $( wmiir read /client | awk '{print $10}' | sort -n ) + do + echo "$i [$( wmiir read /client/$i/tags )] $( wmiir read /client/$i/name )" + done + } | wmiimenu | sed 's/^\([0-9]*\).*$/\1/' + ) + + xwrite /ctl view "$( wmiir read /client/$choice/tags )" + ) &;; + ${PROG}k) + firefox &;; + ${PROG}j) + nautilus --no-desktop &;; + ${SELECT}Return) + # toggle maximizing the client to full screen + (echo Key ${SEND}space; echo Key ${LAYOUT}z) | wmiir write /event;; + esac;; + esac +done &