wmiiscript=$1 if [ -z "$scriptname" ]; then scriptname="$wmiiscript"; fi echo Start $wmiiscript | wmiir write /event 2>/dev/null || exit 1 Keys="" Actions="" Events="" _wi_script() { cat <<'!' BEGIN { arg[1] = "Nop" body = ""; } function addevent() { if(arg[1] == "Key") keys[arg[2]] = 1; var = arg[1] "s" printf "%s=\"$%s\n%s\"\n", var, var, arg[2] gsub("[^a-zA-Z_0-9]", "_", arg[2]); if(body != "") printf "%s_%s() { %s\n }\n", arg[1], arg[2], body } /^(Event|Key|Action)[ \t]/ { addevent() split($0, arg) body = "" } /^[ \t]/ { body = body"\n"$0 } END { addevent() } ! } _wi_text() { eval "cat </dev/null \ | awk '$1 ~ /^[^d].*x/ { print $NF }' \ | sort | uniq } wi_actions() { { wi_proglist $WMII_CONFPATH wi_getfuns Action } | sort | uniq } conf_which() { which=$(which which) prog=$(PATH="$WMII_CONFPATH" $which $1); shift [ -n "$prog" ] && $prog "$@" } wi_script() { _noprog=true if [ "$1" = -f ]; then shift _noprog=/dev/null fi which=$(which which) _prog=$(PATH="$WMII_CONFPATH" $which $1 || echo $_noprog); shift shift; echo "$_prog $*" } wi_runcmd() { if [ "$1" = -t ]; then shift set -- wihack -tags $(wmiir read /tag/sel/ctl | sed 1q) "$*" fi eval exec $* & } wi_tags() { wmiir ls /tag | sed 's,/,,; /^sel$/d' } wi_eventloop() { echo "$Keys" | wmiir write /keys wmiir read /event | while read wi_event do OIFS="$IFS"; IFS="$(echo)" wi_args=$(echo "$wi_event" | sed 's/^[^ ]+ //') IFS="$OIFS" set -- $wi_event event=$1; shift Event_$event $@ done 2>/dev/null } wi_events <<'!' Event Start if [ "$1" = "$wmiiscript" ]; then exit fi Event Key fn=$(echo "$@" | sed 's/[^a-zA-Z_0-9]/_/g') Key_$fn "$@" ! Action() { action=$1; shift if [ -n "$action" ]; then Action_$action "$@" \ || conf_which $action "$@" fi }