commit 022015d98996f004990d96cc5aad81ddd0db2647
parent 656bbcdb8852dae4c339b10c05905d7c1f9a968b
Author: Anselm R. Garbe <garbeam@wmii.de>
Date: Thu, 9 Feb 2006 00:28:49 +0100
implemented first prototype of keys component script
Diffstat:
4 files changed, 108 insertions(+), 41 deletions(-)
diff --git a/cmd/wm/wmii b/cmd/wm/wmii
@@ -20,7 +20,6 @@ mkdir -p /tmp/.ixp-$USER
wmiifs -a $WMII_ADDRESS &
wmiifspid=$apid
wmiiwm -a unix!/tmp/.ixp-$USER/wmiiwm-$WMII_IDENT &
-wmiikeys -a unix!/tmp/.ixp-$USER/wmiikeys-$WMII_IDENT &
wmiibar -a unix!/tmp/.ixp-$USER/wmiibar-$WMII_IDENT &
#wmiimenu -a /tmp/.ixp-$USER/wmiimenu-$WMII_IDENT &
sleep 1
@@ -28,7 +27,6 @@ sleep 1
# mount ixp file systems:
echo -n mount unix!/tmp/.ixp-$USER/wmiiwm-$WMII_IDENT /wm | wmiir write /ctl
echo -n mount unix!/tmp/.ixp-$USER/wmiibar-$WMII_IDENT /bar | wmiir write /ctl
-echo -n mount unix!/tmp/.ixp-$USER/wmiikeys-$WMII_IDENT /keys | wmiir write /ctl
# display the wmii introduction if necessary:
if(mkdir $HOME/.wmii-3 >[2]/dev/null) {
diff --git a/cmd/wmiifs.c b/cmd/wmiifs.c
@@ -145,6 +145,8 @@ xmount(char *arg)
char *p, *wname = strchr(address, ' ');
Mount *mnt;
+ if(!wname)
+ return "no mount point supplied";
*wname = 0;
wname++;
if(*wname == '/')
@@ -156,15 +158,13 @@ xmount(char *arg)
if(!address || !wname || !*address || !*wname)
return Enoserv;
- if(name_to_mount(wname))
- return "already mounted";
-
- mnt = cext_emallocz(sizeof(Mount));
+ if(!(mnt = name_to_mount(wname))) {
+ mnt = cext_emallocz(sizeof(Mount));
+ cext_strlcpy(mnt->address, address, sizeof(mnt->address));
+ mount = (Mount **)cext_array_attach((void **)mount, mnt, sizeof(Mount *), &mountsz);
+ nmount++;
+ }
cext_strlcpy(mnt->wname, wname, sizeof(mnt->wname));
- cext_strlcpy(mnt->address, address, sizeof(mnt->address));
- mount = (Mount **)cext_array_attach((void **)mount, mnt, sizeof(Mount *), &mountsz);
- nmount++;
-
return nil;
}
diff --git a/rc/keys b/rc/keys
@@ -0,0 +1,99 @@
+#!9PREFIX/bin/rc
+# configure wmiikeys
+
+ADDRESS=unix!/tmp/.ixp-$USER/wmiikeys-$WMII_IDENT
+PIDFILE=/tmp/.ixp-$USER/keyspid-$WMII_IDENT
+if(test -r $PIDFILE) {
+ kill -2 `{cat $PIDFILE} >[2]/dev/null
+}
+echo $pid >$PIDFILE
+
+fn sigint {
+ if(test -f $PIDFILE && ~ `{cat $PIDFILE} $pid)
+ rm -f $PIDFILE
+ xwrite /keys/ctl quit
+ xwrite /ctl 'unmount /keys'
+ exit
+}
+
+xterm -rv&
+wmiikeys -a $ADDRESS &
+fn xwrite { echo -n $2 | wmiir write $1 }
+xwrite /ctl 'mount '^$ADDRESS^' /keys'
+sleep 1
+
+wmiir write /keys/reset <<END
+Control-Alt-c
+Control-Alt-q,y
+Control-Alt-w,y
+Alt-t
+Alt-d
+Alt-a
+Shift-Alt-a
+Alt-n
+Alt-m
+Alt-Return
+Shift-Alt-Return
+Control-Alt-y
+Alt-h
+Alt-l
+Alt-Tab
+Alt-j
+Alt-k
+Shift-Alt-h
+Shift-Alt-l
+Shift-Alt-p
+Shift-Alt-1
+Shift-Alt-2
+Shift-Alt-3
+Shift-Alt-4
+END
+
+wmiir read /keys/event | while(key=`{read}) {
+ switch($key) {
+ case Control-Alt-c
+ xwrite /wm/sel/sel/sel/ctl kill
+ case Control-Alt-q,y
+ quit
+ case Control-Alt-w,y
+ wmiirc
+ case Alt-t
+ extern xterm -rv &
+ case Alt-d
+ xwrite /wm/sel/sel/sel/ctl detach
+ case Alt-a
+ xwrite /wm/ctl attach
+ case Shift-Alt-a
+ xwrite /wm/ctl detached
+ case Alt-n
+ wmiir read /wm/sel/new >/dev/null >[2=1]
+ case Alt-m
+ xwrite /wm/sel/sel/sel/ctl max
+ case Alt-Return
+ xwrite /wm/sel/sel/ctl 'swap east'
+ case Shift-Alt-Return
+ xwrite /wm/sel/sel/ctl 'swap west'
+ case Control-Alt-y
+ wmiir read /wm/new >/dev/null >[2=1]
+ case Alt-h
+ xwrite /wm/sel/ctl 'select next'
+ case Alt-l
+ xwrite /wm/sel/ctl 'select prev'
+ case Alt-Tab
+ xwrite /wm/sel/sel/ctl 'select next'
+ case Alt-j
+ xwrite /wm/sel/sel/ctl 'select next'
+ case Alt-k
+ xwrite /wm/sel/sel/ctl 'select prev'
+ case Shift-Alt-h
+ xwrite /wm/ctl 'select prev'
+ case Shift-Alt-l
+ xwrite /wm/ctl 'select next'
+ case Shift-Alt-p
+ xwrite /wm/ctl pager
+ case Shift-Alt-[1-9]
+ xwrite /wm/ctl 'select '^`{echo $k|sed 's/.*-//g'}
+ }
+}
+
+sigint
diff --git a/rc/wmiirc b/rc/wmiirc
@@ -26,37 +26,6 @@ for(page in `{wmiir read /wm | grep '^d' | awk '{print $10}' | grep -v new}) {
}
}
-# WMIIKEYS CONFIGURATION
-wmiir write /keys/reset <<END
-Control-Alt-c #write /wm/sel/sel/sel/ctl kill
-Control-Alt-q,y quit
-Control-Alt-w,y wmiirc
-Alt-t extern xterm -rv
-Alt-d #write /wm/sel/sel/sel/ctl detach
-Alt-a #write /wm/ctl attach
-Shift-Alt-a #write /wm/ctl detached
-Alt-n wmiir read /wm/sel/new >/dev/null >[2=1]
-Alt-m #write /wm/sel/sel/sel/ctl max
-Alt-Return #write /wm/sel/sel/ctl swap east
-Shift-Alt-Return #write /wm/sel/sel/ctl swap west
-Control-Alt-y wmiir read /wm/new >/dev/null >[2=1]
-Alt-h #write /wm/sel/ctl select next
-Alt-l #write /wm/sel/ctl select prev
-Alt-Tab #write /wm/sel/sel/ctl select next
-Alt-j #write /wm/sel/sel/ctl select next
-Alt-k #write /wm/sel/sel/ctl select prev
-Shift-Alt-h #write /wm/ctl select prev
-Shift-Alt-l #write /wm/ctl select next
-Shift-Alt-p #write /wm/ctl pager
-Shift-Alt-1 #write /wm/ctl select 1
-Shift-Alt-2 #write /wm/ctl select 2
-Shift-Alt-3 #write /wm/ctl select 3
-Shift-Alt-4 #write /wm/ctl select 4
-END
-
-xwrite /keys/font $FONT
-xwrite /keys/color $SEL_COLOR
-
# WMIIBAR CONFIGURATION
xwrite /bar/font $FONT
xwrite /bar/defcolor $SEL_COLOR
@@ -64,4 +33,5 @@ echo -n fnord | wmiir write /bar/new/data
# MISC
xsetroot -mod 2 2 -bg '#444466' -fg '#555555'
+keys&
status&