diff -ru wmii.org/config.mk wmii/config.mk --- wmii.org/config.mk Mon Oct 16 15:00:04 2006 +++ wmii/config.mk Sun Oct 29 15:48:29 2006 @@ -21,6 +21,12 @@ #CFLAGS = -g -Wall -O2 ${INCS} -DVERSION=\"${VERSION}\" #LDFLAGS = -g ${LIBS} +# Solaris +#CFLAGS = -fast ${INCS} -DVERSION=\"${VERSION}\" +#LDFLAGS = ${LIBS} +#LDFLAGS += -lsocket -lnsl +#CFLAGS += -xtarget=ultra + # compiler and linker CC = cc LD = ${CC} diff -ru wmii.org/event.c wmii/event.c --- wmii.org/event.c Fri Oct 20 11:00:04 2006 +++ wmii/event.c Sun Oct 29 15:48:29 2006 @@ -61,13 +61,17 @@ XButtonPressedEvent *ev = &e->xbutton; if(ev->window == screen->barwin) { for(b=screen->lbar; b; b=b->next) - if(ispointinrect(ev->x, ev->y, &b->brush.rect)) - return write_event("LeftBarClick %d %s\n", + if(ispointinrect(ev->x, ev->y, &b->brush.rect)) { + write_event("LeftBarClick %d %s\n", ev->button, b->name); + return; + } for(b=screen->rbar; b; b=b->next) - if(ispointinrect(ev->x, ev->y, &b->brush.rect)) - return write_event("RightBarClick %d %s\n", + if(ispointinrect(ev->x, ev->y, &b->brush.rect)) { + write_event("RightBarClick %d %s\n", ev->button, b->name); + return; + } } else if((f = frame_of_win(ev->window))) write_event("ClientClick %d %d\n", idx_of_client(f->client), ev->button); diff -ru wmii.org/fs.c wmii/fs.c --- wmii.org/fs.c Fri Oct 20 11:00:04 2006 +++ wmii/fs.c Sun Oct 29 15:48:29 2006 @@ -29,16 +29,16 @@ typedef struct FileId FileId; struct FileId { FileId *next; - union { +// union { void *ref; - char *buf; - Bar *bar; - Bar **bar_p; - View *view; - Client *client; - Ruleset *rule; - BlitzColor *col; - }; +// char *buf; +// Bar *bar; +// Bar **bar_p; +// View *view; +// Client *client; +// Ruleset *rule; +// BlitzColor *col; +// }; unsigned int id; unsigned int index; Dirtab tab; @@ -326,11 +326,11 @@ void respond_event(P9Req *r) { FileId *f = r->fid->aux; - if(f->buf) { - r->ofcall.data = (void *)f->buf; - r->ofcall.count = strlen(f->buf); + if((char*)f->ref) { + r->ofcall.data = f->ref; + r->ofcall.count = strlen((char*)f->ref); respond(r, NULL); - f->buf = NULL; + f->ref = NULL; }else{ r->aux = pending_event_reads; pending_event_reads = r; @@ -352,10 +352,10 @@ return; for(f=pending_event_fids; f; f=f->next) { fi = f->fid->aux; - slen = fi->buf ? strlen(fi->buf) : 0; - fi->buf = ixp_erealloc(fi->buf, slen + len + 1); - fi->buf[slen] = '\0'; - strcat(fi->buf, buffer); + slen = fi->ref ? strlen((char*)fi->ref) : 0; + fi->ref = ixp_erealloc(fi->ref, slen + len + 1); + ((char*)fi->ref)[slen] = '\0'; + strcat((char*)fi->ref, buffer); } while((aux = pending_event_reads)) { pending_event_reads = pending_event_reads->aux; @@ -461,7 +461,7 @@ } break; case FsDBars: - for(b=*parent->bar_p; b; b=b->next) { + for(b=*(Bar**)parent->ref; b; b=b->next) { if(!name || !strcmp(name, b->name)) { file = get_file(); *last = file; @@ -584,13 +584,13 @@ return 0; case FsFColRules: case FsFTagRules: - return f->rule->size; + return ((Ruleset*)f->ref)->size; case FsFKeys: return def.keyssz; case FsFCtags: - return strlen(f->client->tags); + return strlen(((Client*)f->ref)->tags); case FsFprops: - return strlen(f->client->props); + return strlen(((Client*)f->ref)->props); } } @@ -646,12 +646,12 @@ else{ switch(f->tab.type) { case FsFprops: - write_buf(r, (void *)f->client->props, strlen(f->client->props)); + write_buf(r, (void *)((Client*)f->ref)->props, strlen(((Client*)f->ref)->props)); respond(r, NULL); return; case FsFColRules: case FsFTagRules: - write_buf(r, (void *)f->rule->string, f->rule->size); + write_buf(r, (void *)((Ruleset*)f->ref)->string, ((Ruleset*)f->ref)->size); respond(r, NULL); return; case FsFKeys: @@ -659,15 +659,15 @@ respond(r, NULL); return; case FsFCtags: - write_buf(r, (void *)f->client->tags, strlen(f->client->tags)); + write_buf(r, (void *)((Client*)f->ref)->tags, strlen(((Client*)f->ref)->tags)); respond(r, NULL); return; case FsFTctl: - write_buf(r, (void *)f->view->name, strlen(f->view->name)); + write_buf(r, (void *)((View*)f->ref)->name, strlen(((View*)f->ref)->name)); respond(r, NULL); return; case FsFBar: - write_buf(r, (void *)f->bar->buf, strlen(f->bar->buf)); + write_buf(r, (void *)((Bar*)f->ref)->buf, strlen(((Bar*)f->ref)->buf)); respond(r, NULL); return; case FsFRctl: @@ -687,7 +687,7 @@ respond(r, NULL); return; case FsFTindex: - buf = (char *)view_index(f->view); + buf = (char *)view_index((View*)f->ref); n = strlen(buf); write_buf(r, (void *)buf, n); respond(r, NULL); @@ -717,7 +717,7 @@ switch(f->tab.type) { case FsFColRules: case FsFTagRules: - write_to_buf(r, &f->rule->string, &f->rule->size, 0); + write_to_buf(r, &((Ruleset*)f->ref)->string, &((Ruleset*)f->ref)->size, 0); respond(r, NULL); return; case FsFKeys: @@ -726,21 +726,21 @@ return; case FsFCtags: data_to_cstring(r); - i=strlen(f->client->tags); - write_to_buf(r, &f->client->tags, &i, 255); + i=strlen(((Client*)f->ref)->tags); + write_to_buf(r, &((Client*)f->ref)->tags, &i, 255); r->ofcall.count = i- r->ifcall.offset; respond(r, NULL); return; case FsFBar: /* XXX: This should validate after each write */ - i = strlen(f->bar->buf); - write_to_buf(r, &f->bar->buf, &i, 279); + i = strlen(((Bar*)f->ref)->buf); + write_to_buf(r, &((Bar*)f->ref)->buf, &i, 279); r->ofcall.count = i - r->ifcall.offset; respond(r, NULL); return; case FsFCctl: data_to_cstring(r); - if((errstr = message_client(f->client, r->ifcall.data))) { + if((errstr = message_client((Client*)f->ref, r->ifcall.data))) { respond(r, errstr); return; } @@ -749,7 +749,7 @@ return; case FsFTctl: data_to_cstring(r); - if((errstr = message_view(f->view, r->ifcall.data))) { + if((errstr = message_view((View*)f->ref, r->ifcall.data))) { respond(r, errstr); return; } @@ -835,7 +835,7 @@ respond(r, Ebadvalue); return; } - create_bar(f->bar_p, r->ifcall.name); + create_bar((Bar**)f->ref, r->ifcall.name); f = lookup_file(f, r->ifcall.name); if(!f) { respond(r, Enofile); @@ -860,7 +860,7 @@ respond(r, Enoperm); return; case FsFBar: - destroy_bar(f->next->bar_p, f->bar); + destroy_bar((Bar**)f->next->ref, (Bar*)f->ref); draw_bar(screen); respond(r, NULL); break; @@ -877,10 +877,10 @@ switch(f->tab.type) { case FsFColRules: - update_rules(&f->rule->rule, f->rule->string); + update_rules(&((Ruleset*)f->ref)->rule, ((Ruleset*)f->ref)->string); break; case FsFTagRules: - update_rules(&f->rule->rule, f->rule->string); + update_rules(&((Ruleset*)f->ref)->rule, ((Ruleset*)f->ref)->string); for(c=client; c; c=c->next) apply_rules(c); update_views(); @@ -889,17 +889,17 @@ update_keys(); break; case FsFCtags: - apply_tags(f->client, f->client->tags); + apply_tags((Client*)f->ref, ((Client*)f->ref)->tags); update_views(); - draw_frame(f->client->sel); + draw_frame(((Client*)f->ref)->sel); break; case FsFBar: - buf = f->bar->buf; - i = strlen(f->bar->buf); - parse_colors(&buf, &i, &f->bar->brush.color); + buf = ((Bar*)f->ref)->buf; + i = strlen(((Bar*)f->ref)->buf); + parse_colors(&buf, &i, &((Bar*)f->ref)->brush.color); while(i > 0 && buf[i - 1] == '\n') buf[--i] = '\0'; - strncpy(f->bar->text, buf, sizeof(f->bar->text)); + strncpy(((Bar*)f->ref)->text, buf, sizeof(((Bar*)f->ref)->text)); draw_bar(screen); break; case FsFEvent: @@ -908,7 +908,7 @@ ft = *fl; *fl = (*fl)->next; f = ft->fid->aux; - free(f->buf); + free(f->ref); free(ft); break; } Common subdirectories: wmii.org/rc and wmii/rc diff -ru wmii.org/wmii wmii/wmii --- wmii.org/wmii Thu Oct 12 17:00:04 2006 +++ wmii/wmii Sun Oct 29 15:48:29 2006 @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash # start wmiiwm and wait for its termination WMII_CONFPATH="$HOME/.wmii-VERSION:CONFPREFIX/wmii-VERSION" export WMII_CONFPATH diff -ru wmii.org/rc/status wmii/rc/status --- wmii.org/rc/status Thu Oct 12 17:00:04 2006 +++ wmii/rc/status Sun Oct 29 15:51:29 2006 @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash # periodically print date and load average to the bar xwrite() { diff -ru wmii.org/rc/wmiirc wmii/rc/wmiirc --- wmii.org/rc/wmiirc Thu Oct 12 17:00:04 2006 +++ wmii/rc/wmiirc Sun Oct 29 16:41:26 2006 @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash # configure wmii xwrite() { @@ -15,6 +15,12 @@ echo `PATH="$WMII_CONFPATH:$PATH" which $prog` "$@" } +tagsmenu() { + tag=`ixpc read /tag/sel/ctl` + tags=`ixpc ls /tag | sed 's,/,,; /^sel$/d' | awk "BEGIN{print \"$tag\"} !/^$tag\$/" | $DMENU` + test -n "$tags" && xwrite $@ "$tags" +} + MODKEY=Mod1 UP=k DOWN=j @@ -21,18 +27,23 @@ LEFT=h RIGHT=l -DMENU='dmenu -font fixed -normbg #eeeeee -normfg #222222 -selbg #335577 -selfg #ffffff' WMII_FONT='fixed' -WMII_NORMCOLORS='#222222 #eeeeee #666666' -WMII_SELCOLORS='#ffffff #335577 #447799' -# dark background -#WMII_NORMCOLORS='#eeeeee #111111 #222222' - +WMII_NORMBG='#888888' +WMII_NORMFG='#000000' +WMII_SELBG='#dd7700' +WMII_SELFG='#000000' +WMII_BACKGROUND='#000000' +# colors are text,bg,border +WMII_NORMCOLORS="$WMII_NORMFG $WMII_NORMBG $WMII_NORMBG" +WMII_SELCOLORS="$WMII_SELFG $WMII_SELBG $WMII_SELBG" +DMENU="dmenu -font $WMII_FONT -normbg $WMII_NORMBG -normfg $WMII_NORMFG -selbg $WMII_FOCUSBG -selfg $WMII_FOCUSFG" export DMENU WMII_FONT WMII_SELCOLORS WMII_NORMCOLORS -# stop any running instances or ixpcc -echo Start ixpcc | ixpc write /event || exit 1 +WMII_TERM="$HOME/.wmii-3.5/terminal" export WMII_TERM +# stop any running instances of wmiirc +echo Start wmiirc | ixpc write /event || exit 1 + # WM CONFIGURATION ixpc write /ctl << EOF font $WMII_FONT @@ -57,7 +68,7 @@ EOF # MISC -xsetroot -solid '#333333' +xsetroot -solid $WMII_BACKGROUND `conf_which status` & PROGS_FILE="$WMII_NS_DIR/.dmenu.proglist" ACTIONS_DIRS=`echo "$WMII_CONFPATH" | tr : ' '` @@ -136,7 +147,7 @@ parms="$@" case "$type" in Start) - if test ixpcc = "$1" + if test wmiirc = "$1" then exit fi;; @@ -180,11 +191,11 @@ $MODKEY-p) sh -c "`$DMENU <$PROGS_FILE`" &;; $MODKEY-t) - xwrite /ctl view "`ixpc ls /tag | sed 's,/,,; /^sel$/d' | $DMENU`" &;; + tagsmenu /ctl view &;; $MODKEY-[0-9]) xwrite /ctl view "`echo $1 | sed 's/.*-//'`";; $MODKEY-Return) - xterm &;; + $WMII_TERM &;; $MODKEY-Shift-$LEFT) xwrite /tag/sel/ctl send sel left;; $MODKEY-Shift-$RIGHT) @@ -198,8 +209,7 @@ $MODKEY-Shift-c) xwrite /client/sel/ctl kill;; $MODKEY-Shift-t) - xwrite "/client/`ixpc read /client/sel/ctl`/tags" \ - "`ixpc ls /tag | sed 's,/,,; /^sel$/d' | $DMENU`" &;; + tagsmenu "/client/`ixpc read /client/sel/ctl`/tags" &;; $MODKEY-Shift-[0-9]) xwrite /client/sel/tags "`echo $1 | sed 's/.*-//'`";; esac;;