[hackers] [wmii] Cleanup wmiirc scripts. || Kris Maglione

From: <hg_AT_suckless.org>
Date: Sun, 11 Oct 2009 09:36:08 +0000 (UTC)

changeset: 2522:08961b5d8662
user: Kris Maglione <jg_AT_suckless.org>
date: Fri Oct 09 16:40:33 2009 -0400
files: README alternative_wmiircs/plan9port/wmiirc alternative_wmiircs/python/pygmi/events.py alternative_wmiircs/python/wmiirc.py cmd/wmii.rc.rc cmd/wmii.sh.sh rc/wmiirc.sh
description:
Cleanup wmiirc scripts.

diff -r cad4d8e15601 -r 08961b5d8662 README
--- a/README Fri Oct 09 16:40:33 2009 -0400
+++ b/README Fri Oct 09 16:40:33 2009 -0400
@@ -46,8 +46,8 @@
 -------------
 The configuration of wmii is done by customizing the rc script rc.wmii.local,
 which remotely controls the window manager and handles various events.
-The main rc.wmii script lives in PREFIX/etc/wmii-3.5/, while rc.wmii.local
-goes in $HOME/.wmii-3.5/.
+The main rc.wmii script lives in PREFIX/etc/wmii_AT_CONFPREFIX@/, while rc.wmii.local
+goes in $HOME/.wmii_AT_CONFPREFIX@/.
 
 If you wish to unbind keys bound by rc.wmii in rc.wmii.local, you
 must do so inside the function Action-overridekeys. You may,
diff -r cad4d8e15601 -r 08961b5d8662 alternative_wmiircs/plan9port/wmiirc
--- a/alternative_wmiircs/plan9port/wmiirc Fri Oct 09 16:40:33 2009 -0400
+++ b/alternative_wmiircs/plan9port/wmiirc Fri Oct 09 16:40:33 2009 -0400
@@ -91,7 +91,7 @@
                 msg = 'The following client is not responding. What would you like to do?'
                 resp = `{wihack -transient $client \
                                 xmessage -nearmouse -buttons Kill,Wait -print \
- $msg $wi_nl '' `{wmiir read /client/$client/label}}
+ $msg $wi_newline '' `{wmiir read /client/$client/label}}
                 if(~ $resp Kill)
                         wmiir xwrite /client/$client/ctl slay
         }&}
@@ -258,7 +258,7 @@
 Action rehash &
 
 # Tag Bar Setup
-ifs=$wi_nl{
+ifs=$wi_newline {
         rc -c 'wmiir rm /lbar/^$*' >[2]/dev/null \
                 `{comm -23 <{wmiir ls /lbar} \
                            <{wi_tags}}
diff -r cad4d8e15601 -r 08961b5d8662 alternative_wmiircs/python/pygmi/events.py
--- a/alternative_wmiircs/python/pygmi/events.py Fri Oct 09 16:40:33 2009 -0400
+++ b/alternative_wmiircs/python/pygmi/events.py Fri Oct 09 16:40:33 2009 -0400
@@ -6,8 +6,7 @@
 import pygmi
 from pygmi import monitor, client, curry, call, program_list, _
 
-__all__ = ('keys', 'bind_events', 'event_loop', 'event', 'Match',
- 'Desc')
+__all__ = ('keys', 'bind_events', 'event_loop', 'event', 'Match')
 
 keydefs = {}
 events = {}
@@ -55,14 +54,6 @@
 def event(fn):
     bind_events({fn.__name__: fn})
 
-class Desc(object):
- def __init__(self, doc):
- self.doc = doc
- def __unicode__(self):
- return self.doc
- def __str__(self):
- return str(self.doc)
-
 class Keys(object):
     def __init__(self):
         self.modes = {}
@@ -72,8 +63,13 @@
 
     def _add_mode(self, mode):
         if mode not in self.modes:
- self.modes[mode] = { 'name': mode, 'desc': {}, 'groups': [],
- 'keys': {}, 'import': {} }
+ self.modes[mode] = {
+ 'name': mode,
+ 'desc': {},
+ 'groups': [],
+ 'keys': {},
+ 'import': {},
+ }
             self.modelist.append(mode)
 
     def _set_mode(self, mode):
@@ -81,7 +77,8 @@
         self._mode = mode
         self._keys = dict((k % keydefs, v) for k, v in
                           self.modes[mode]['keys'].items() +
- self.modes[mode]['keys'].items());
+ self.modes[mode]['import'].items());
+
         client.write('/keys', '\n'.join(self._keys.keys()) + '\n')
     mode = property(lambda self: self._mode, _set_mode)
 
@@ -91,7 +88,7 @@
             ('Mode %s\n' % mode['name']) +
             '\n\n'.join((' %s\n' % str(group or '')) +
                         '\n'.join(' %- 20s %s' % (key % keydefs,
- mode['desc'][key])
+ mode['keys'][key].__doc__)
                                   for key in mode['desc'][group])
                         for group in mode['groups'])
             for mode in (self.modes[name]
@@ -101,28 +98,32 @@
         self._add_mode(mode)
         mode = self.modes[mode]
         group = None
- key = None
         def add_desc(key, desc):
- mode['desc'][key] = desc
             if group not in mode['desc']:
                 mode['desc'][group] = []
                 mode['groups'].append(group)
             if key not in mode['desc'][group]:
                 mode['desc'][group].append(key);
 
- for k in keys:
- if key and isinstance(k, Desc):
- add_desc(key, k)
- elif isinstance(k, Desc):
- group = str(k)
- elif key:
- mode['keys'][key] = k
- key = None
+ if isinstance(keys, dict):
+ keys = keys.iteritems()
+ for obj in keys:
+ if isinstance(obj, tuple) and len(obj) in (2, 3):
+ if len(obj) == 2:
+ key, val = obj
+ desc = ''
+ elif len(obj) == 3:
+ key, desc, val = obj
+ mode['keys'][key] = val
+ add_desc(key, desc)
+ val.__doc__ = str(desc)
             else:
- key = k
+ group = obj
 
+ def wrap_import(mode, key):
+ return lambda k: self.modes[mode]['keys'][key](k)
         for k, v in flatten((v, k) for k, v in import_.iteritems()):
- mode['import'][k % keydefs] = v
+ mode['import'][k % keydefs] = wrap_import(v, k)
 
     def dispatch(self, key):
         mode = self.modes[self.mode]
diff -r cad4d8e15601 -r 08961b5d8662 alternative_wmiircs/python/wmiirc.py
--- a/alternative_wmiircs/python/wmiirc.py Fri Oct 09 16:40:33 2009 -0400
+++ b/alternative_wmiircs/python/wmiirc.py Fri Oct 09 16:40:33 2009 -0400
@@ -161,117 +161,121 @@
 notice = Notice()
 
 keys.bind('main', (
- Desc("Moving around"),
- '%(mod)s-%(left)s', Desc("Select the client to the left"),
- lambda k: Tag('sel').select('left'),
- '%(mod)s-%(right)s', Desc("Select the client to the right"),
- lambda k: Tag('sel').select('right'),
- '%(mod)s-%(up)s', Desc("Select the client above"),
- lambda k: Tag('sel').select('up'),
- '%(mod)s-%(down)s', Desc("Select the client below"),
- lambda k: Tag('sel').select('down'),
+ "Moving around",
+ ('%(mod)s-%(left)s', "Select the client to the left",
+ lambda k: Tag('sel').select('left')),
+ ('%(mod)s-%(right)s', "Select the client to the right",
+ lambda k: Tag('sel').select('right')),
+ ('%(mod)s-%(up)s', "Select the client above",
+ lambda k: Tag('sel').select('up')),
+ ('%(mod)s-%(down)s', "Select the client below",
+ lambda k: Tag('sel').select('down')),
 
- '%(mod)s-space', Desc("Toggle between floating and managed layers"),
- lambda k: Tag('sel').select('toggle'),
+ ('%(mod)s-space', "Toggle between floating and managed layers",
+ lambda k: Tag('sel').select('toggle')),
 
- Desc("Moving through stacks"),
- '%(mod)s-Control-%(up)s', Desc("Select the stack above"),
- lambda k: Tag('sel').select('up', stack=True),
- '%(mod)s-Control-%(down)s', Desc("Select the stack below"),
- lambda k: Tag('sel').select('down', stack=True),
+ "Moving through stacks",
+ ('%(mod)s-Control-%(up)s', "Select the stack above",
+ lambda k: Tag('sel').select('up', stack=True)),
+ ('%(mod)s-Control-%(down)s', "Select the stack below",
+ lambda k: Tag('sel').select('down', stack=True)),
 
 
- Desc("Moving clients around"),
- '%(mod)s-Shift-%(left)s', Desc("Move selected client to the left"),
- lambda k: Tag('sel').send(Client('sel'), 'left'),
- '%(mod)s-Shift-%(right)s', Desc("Move selected client to the right"),
- lambda k: Tag('sel').send(Client('sel'), 'right'),
- '%(mod)s-Shift-%(up)s', Desc("Move selected client up"),
- lambda k: Tag('sel').send(Client('sel'), 'up'),
- '%(mod)s-Shift-%(down)s', Desc("Move selected client down"),
- lambda k: Tag('sel').send(Client('sel'), 'down'),
+ "Moving clients around",
+ ('%(mod)s-Shift-%(left)s', "Move selected client to the left",
+ lambda k: Tag('sel').send(Client('sel'), 'left')),
+ ('%(mod)s-Shift-%(right)s', "Move selected client to the right",
+ lambda k: Tag('sel').send(Client('sel'), 'right')),
+ ('%(mod)s-Shift-%(up)s', "Move selected client up",
+ lambda k: Tag('sel').send(Client('sel'), 'up')),
+ ('%(mod)s-Shift-%(down)s', "Move selected client down",
+ lambda k: Tag('sel').send(Client('sel'), 'down')),
 
- '%(mod)s-Shift-space', Desc("Toggle selected client between floating and managed layers"),
- lambda k: Tag('sel').send(Client('sel'), 'toggle'),
+ ('%(mod)s-Shift-space', "Toggle selected client between floating and managed layers",
+ lambda k: Tag('sel').send(Client('sel'), 'toggle')),
 
- Desc("Client actions"),
- '%(mod)s-f', Desc("Toggle selected client's fullsceen state"),
- lambda k: Client('sel').set('Fullscreen', 'toggle'),
- '%(mod)s-Shift-c', Desc("Close client"),
- lambda k: Client('sel').kill(),
+ "Client actions",
+ ('%(mod)s-f', "Toggle selected client's fullsceen state",
+ lambda k: Client('sel').set('Fullscreen', 'toggle')),
+ ('%(mod)s-Shift-c', "Close client",
+ lambda k: Client('sel').kill()),
 
- Desc("Changing column modes"),
- '%(mod)s-d', Desc("Set column to default mode"),
- lambda k: setattr(Tag('sel').selcol, 'mode', 'default-max'),
- '%(mod)s-s', Desc("Set column to stack mode"),
- lambda k: setattr(Tag('sel').selcol, 'mode', 'stack-max'),
- '%(mod)s-m', Desc("Set column to max mode"),
- lambda k: setattr(Tag('sel').selcol, 'mode', 'stack+max'),
+ "Changing column modes",
+ ('%(mod)s-d', "Set column to default mode",
+ lambda k: setattr(Tag('sel').selcol, 'mode', 'default-max')),
+ ('%(mod)s-s', "Set column to stack mode",
+ lambda k: setattr(Tag('sel').selcol, 'mode', 'stack-max')),
+ ('%(mod)s-m', "Set column to max mode",
+ lambda k: setattr(Tag('sel').selcol, 'mode', 'stack+max')),
 
- Desc("Running programs"),
- '%(mod)s-a', Desc("Open wmii actions menu"),
- lambda k: action_menu.call(),
- '%(mod)s-p', Desc("Open program menu"),
- lambda k: program_menu.call(),
+ "Running programs",
+ ('%(mod)s-a', "Open wmii actions menu",
+ lambda k: action_menu.call()),
+ ('%(mod)s-p', "Open program menu",
+ lambda k: program_menu.call()),
 
- '%(mod)s-Return', Desc("Launch a terminal"),
- lambda k: call(*terminal, background=True),
+ ('%(mod)s-Return', "Launch a terminal",
+ lambda k: call(*terminal, background=True)),
 
- Desc("Tag actions"),
- '%(mod)s-t', Desc("Change to another tag"),
- lambda k: tags.select(tag_menu.call()),
- '%(mod)s-Shift-t', Desc("Retag the selected client"),
- lambda k: setattr(Client('sel'), 'tags', tag_menu.call()),
+ "Tag actions",
+ ('%(mod)s-t', "Change to another tag",
+ lambda k: tags.select(tag_menu.call())),
+ ('%(mod)s-Shift-t', "Retag the selected client",
+ lambda k: setattr(Client('sel'), 'tags', tag_menu.call())),
 
- '%(mod)s-n', Desc("Move to the view to the left"),
- lambda k: tags.select(tags.next()),
- '%(mod)s-b', Desc("Move to the view to the right"),
- lambda k: tags.select(tags.next(True)),
- '%(mod)s-i', Desc("Move to the newer tag in the tag stack"),
- lambda k: tags.select(tags.NEXT),
- '%(mod)s-o', Desc("Move to the older tag in the tag stack"),
- lambda k: tags.select(tags.PREV),
+ ('%(mod)s-n', "Move to the view to the left",
+ lambda k: tags.select(tags.next())),
+ ('%(mod)s-b', "Move to the view to the right",
+ lambda k: tags.select(tags.next(True))),
+ ('%(mod)s-i', "Move to the newer tag in the tag stack",
+ lambda k: tags.select(tags.NEXT)),
+ ('%(mod)s-o', "Move to the older tag in the tag stack",
+ lambda k: tags.select(tags.PREV)),
 ))
 def bind_num(i):
     keys.bind('main', (
- Desc("Tag actions"),
- '%%(mod)s-%d' % i, Desc("Move to view '%d'" % i),
- lambda k: tags.select(str(i)),
- '%%(mod)s-Shift-%d' % i, Desc("Retag selected client with tag '%d'" % i),
- lambda k: setattr(Client('sel'), 'tags', i),
+ "Tag actions",
+ ('%%(mod)s-%d' % i, "Move to view '%d'" % i,
+ lambda k: tags.select(str(i))),
+ ('%%(mod)s-Shift-%d' % i, "Retag selected client with tag '%d'" % i,
+ lambda k: setattr(Client('sel'), 'tags', i)),
     ))
 map(bind_num, range(0, 10))
 
 keys.bind('main', (
- Desc("Changing modes"),
- '%(mod)s-Control-r', Desc("Enter resize mode"),
- lambda k: setattr(keys, 'mode', 'resize'),
- '%(mod)s-Control-t', Desc("Enter passthrough mode"),
- lambda k: setattr(keys, 'mode', 'passthrough'),
+ "Changing modes",
+ ('%(mod)s-Control-r', "Enter resize mode",
+ lambda k: setattr(keys, 'mode', 'resize')),
+ ('%(mod)s-Control-t', "Enter passthrough mode",
+ lambda k: setattr(keys, 'mode', 'passthrough')),
 ));
 keys.bind('passthrough', (
- Desc("Changing modes"),
- '%(mod)s-Control-t', Desc("Leave passthrough mode"),
- lambda k: setattr(keys, 'mode', 'main'),
+ "Changing modes",
+ ('%(mod)s-Control-t', "Leave passthrough mode",
+ lambda k: setattr(keys, 'mode', 'main')),
 ));
 
 keys.bind('resize', (
- 'Escape', Desc("Leave resize mode"),
- lambda k: setattr(keys, 'mode', 'main'),
+ ('Escape', "Leave resize mode",
+ lambda k: setattr(keys, 'mode', 'main')),
 ), import_={'main': ('%(mod)s-%(left)s', '%(mod)s-%(right)s',
                      '%(mod)s-%(up)s', '%(mod)s-%(down)s',
                      '%(mod)s-Space')})
 
 def addresize(mod, desc, cmd, *args):
     keys.bind('resize', (
- mod + '%(left)s', Desc("%s selected client to the left" % desc),
- lambda k: Tag('sel').ctl(cmd, 'sel sel', 'left', *args),
- mod + '%(right)s', Desc("%s selected client to the right" % desc),
- lambda k: Tag('sel').ctl(cmd, 'sel sel', 'right', *args),
- mod + '%(up)s', Desc("%s selected client up" % desc),
- lambda k: Tag('sel').ctl(cmd, 'sel sel', 'up', *args),
- mod + '%(down)s', Desc("%s selected client down" % desc),
- lambda k: Tag('sel').ctl(cmd, 'sel sel', 'down', *args),
+ (mod + '%(left)s', "%s selected client to the left" % desc,
+ lambda k: Tag('sel').ctl(cmd, 'sel sel', 'left',
+ *args)),
+ (mod + '%(right)s', "%s selected client to the right" % desc,
+ lambda k: Tag('sel').ctl(cmd, 'sel sel', 'right',
+ *args)),
+ (mod + '%(up)s', "%s selected client up" % desc,
+ lambda k: Tag('sel').ctl(cmd, 'sel sel', 'up',
+ *args)),
+ (mod + '%(down)s', "%s selected client down" % desc,
+ lambda k: Tag('sel').ctl(cmd, 'sel sel', 'down',
+ *args)),
     ));
 addresize('', 'Grow', 'grow')
 addresize('Control-', 'Shrink', 'grow', '-1')
diff -r cad4d8e15601 -r 08961b5d8662 cmd/wmii.rc.rc
--- a/cmd/wmii.rc.rc Fri Oct 09 16:40:33 2009 -0400
+++ b/cmd/wmii.rc.rc Fri Oct 09 16:40:33 2009 -0400
@@ -10,7 +10,7 @@
 wmiiscript=$1
 wmiikeys=()
 
-wi_nl='
+wi_newline='
 '
 
 echo Start $wmiiscript | wmiir write /event >[2]/dev/null \
@@ -145,8 +145,8 @@
         wi_initkeys
 
         wi_readevent |
- while(ifs=$wi_nl{wi_event=`{read}}) {
- ifs=$wi_nl{
+ while(ifs=$wi_ewlinel{wi_event=`{read}}) {
+ ifs=$wi_newline{
                         wi_arg=`{echo $wi_event | sed 's/^[^ ]+ //'}}
                 * = `{echo $wi_event}
                 event = $1; shift
diff -r cad4d8e15601 -r 08961b5d8662 cmd/wmii.sh.sh
--- a/cmd/wmii.sh.sh Fri Oct 09 16:40:33 2009 -0400
+++ b/cmd/wmii.sh.sh Fri Oct 09 16:40:33 2009 -0400
@@ -1,13 +1,24 @@
 
-if [ -z "$scriptname" ]; then
- scriptname="$wmiiscript"; fi
+[ -z "$scriptname" ] && scriptname="$wmiiscript"
 echo Start $wmiiscript | wmiir write /event 2>/dev/null ||
         exit 1
 
-wi_nl='
+wi_newline='
 '
 
 _wi_script() {
+ # Awk script to mangle key/event/action definition spec
+ # into switch-case functions and lists of the cases. Also
+ # generates a simple key binding help text based on KeyGroup
+ # clauses and comments that appear on key lines.
+ #
+ # Each clause (Key, Event, Action) generates a function of the
+ # same name which executes the indented text after the matching
+ # clause. Clauses are selected based on the first argument passed
+ # to the mangled function. Additionally, a variable is created named
+ # for the plouralized version of the clause name (Keys, Events,
+ # Actions) which lists each case value. These are used for actions
+ # menus and to write wmii's /keys file.
         cat <<'!'
         BEGIN {
                 arg[1] = "Nop"
@@ -83,19 +94,14 @@
         Key "$@"
 !
         eval "cat <<!
-$(sed "$_sed" | sed '/^[ ]/s/\([$`]\)/\\\1/g')
+$( (test ! -t 0 && cat; for a; do eval "$a"; done) | sed '/^[ ]/s/\([$`\\]\)/\\\1/g')
 !
 "
 }
 
 wi_events() {
- _sed=""
- if [ "$1" = -s ]; then
- _sed="s/^$2//"
- shift 2
- fi
- #cho "$(_wi_text | awk "$(_wi_script)")" | cat -n
- eval "$(_wi_text | awk "$(_wi_script)")"
+ #cho "$(_wi_text "$@" | awk "$(_wi_script)")" | cat -n
+ eval "$(_wi_text "$@" | awk "$(_wi_script)")"
 }
 
 wi_fatal() {
@@ -189,7 +195,7 @@
 
         wmiir read /event | while read wi_event
         do
- IFS="$wi_nl"
+ IFS="$wi_newline"
                 wi_arg=$(echo "$wi_event" | sed 's/^[^ ]* //')
                 unset IFS
                 set -- $wi_event
diff -r cad4d8e15601 -r 08961b5d8662 rc/wmiirc.sh
--- a/rc/wmiirc.sh Fri Oct 09 16:40:33 2009 -0400
+++ b/rc/wmiirc.sh Fri Oct 09 16:40:33 2009 -0400
@@ -15,14 +15,14 @@
 noticebar=/rbar/!notice
 
 # Colors tuples: "<text> <background> <border>"
-WMII_NORMCOLORS='#000000 #c1c48b #81654f'
-WMII_FOCUSCOLORS='#000000 #81654f #000000'
+export WMII_NORMCOLORS='#000000 #c1c48b #81654f'
+export WMII_FOCUSCOLORS='#000000 #81654f #000000'
 
-WMII_BACKGROUND='#333333'
-WMII_FONT='-*-fixed-medium-r-*-*-13-*-*-*-*-*-*-*'
+export WMII_BACKGROUND='#333333'
+export WMII_FONT='-*-fixed-medium-r-*-*-13-*-*-*-*-*-*-*'
 
 set -- $(echo $WMII_NORMCOLORS $WMII_FOCUSCOLORS)
-WMII_TERM="@TERMINAL@"
+export WMII_TERM="@TERMINAL@"
 
 # Menu history
 hist="${WMII_CONFPATH%%:*}/history"
@@ -52,176 +52,175 @@
 # 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_nl"
- resp=$(wihack -transient $client \
- xmessage -nearmouse -buttons Kill,Wait -print \
- "$msg $(wmiir read /client/sel/label)")
- if [ "$resp" = Kill ]; then
- wmiir xwrite /client/$client/ctl slay &
- fi
- }&
- Event Notice
- wmiir xwrite $noticebar $wi_arg
+# 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 = $!
- 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
- xmessage -file - -fn ${WMII_FONT%%,*} <<EOF
- $KeysHelp
- EOF
- Action quit
- wmiir xwrite /ctl quit
- Action exec
- wmiir xwrite /ctl exec "$@"
- Action rehash
- proglist $PATH >$progsfile
- Action status
- set +xv
- if wmiir remove /rbar/status 2>/dev/null; then
- sleep 2
+ 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
- echo "$WMII_NORMCOLORS" | wmiir create /rbar/status
- while status | wmiir write /rbar/status; do
- sleep 1
- done
- # Key Bindings
- 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
+ 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 "$@" &
 
- Key $MODKEY-space # Toggle between floating and managed layers
- wmiir xwrite /tag/sel/ctl select toggle
+# Actions
+Action showkeys
+ echo "$KeysHelp" | xmessage -file - -fn ${WMII_FONT%%,*}
+Action quit
+ wmiir xwrite /ctl quit
+Action exec
+ wmiir xwrite /ctl exec "$@"
+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
 
- KeyGroup Moving through stacks
- Key $MODKEY-Control-$UP # Select the stack above
- wmiir xwrite /taglsel/ctl select up stack
- Key $MODKEY-Control-$DOWN # Select the stack below
- wmiir xwrite /taglsel/ctl select down stack
+# Key Bindings
+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
 
- 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-space # Toggle between floating and managed layers
+ wmiir xwrite /tag/sel/ctl select toggle
 
- Key $MODKEY-Shift-space # Toggle selected client between floating and managed layers
- wmiir xwrite /tag/sel/ctl send sel toggle
+KeyGroup Moving through stacks
+Key $MODKEY-Control-$UP # Select the stack above
+ wmiir xwrite /taglsel/ctl select up stack
+Key $MODKEY-Control-$DOWN # Select the stack below
+ wmiir xwrite /taglsel/ctl select down stack
 
- 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 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
 
- 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
+Key $MODKEY-Shift-space # Toggle selected client between floating and managed layers
+ wmiir xwrite /tag/sel/ctl send sel toggle
 
- 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)" &
+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
 
- Key $MODKEY-Return # Launch a terminal
- eval wmiir setsid $WMII_TERM &
+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 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 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)" &
 
- 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) &
+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 <<!
- Key $MODKEY-$i # Move to the numbered view
- wmiir xwrite /ctl view "$i"
- Key $MODKEY-Shift-$i # Retag selected client with the numbered tag
- wmiir xwrite /client/sel/tags "$i"
+Key $MODKEY-$i # Move to the numbered view
+ wmiir xwrite /ctl view "$i"
+Key $MODKEY-Shift-$i # Retag selected client with the numbered tag
+ wmiir xwrite /client/sel/tags "$i"
 !
         done
 }
-wi_events <<!
-$(events | sed 's/^ \|^ //')
-$(local_events)
-!
-unset events local_events
+wi_events events local_events
 
 # WM Configuration
 wmiir write /ctl <<!
@@ -233,16 +232,13 @@
 !
 xsetroot -solid "$WMII_BACKGROUND" &
 
-export WMII_FONT WMII_TERM
-export WMII_FOCUSCOLORS WMII_SELCOLORS WMII_NORMCOLORS
-
 # Misc
 progsfile="$(wmiir namespace)/.proglist"
 action status &
 wi_proglist $PATH >$progsfile &
 
 # Setup Tag Bar
-IFS="$wi_nl"
+IFS="$wi_newline"
 wmiir rm $(wmiir ls /lbar | sed 's,^,/lbar/,') >/dev/null
 seltag=$(wmiir read /tag/sel/ctl | sed 1q)
 unset IFS
Received on Sun Oct 11 2009 - 09:36:08 UTC

This archive was generated by hypermail 2.2.0 : Sun Oct 11 2009 - 09:48:16 UTC