wmii

git clone git://oldgit.suckless.org/wmii/
Log | Files | Refs | README | LICENSE

commit 20955d76c6da03b11da98a914363549ac27816c5
parent ffc6aa63baa04582bcdc38d8792702a327cc4766
Author: Kris Maglione <bsdaemon@wmii.de>
Date:   Fri, 23 Jun 2006 00:37:59 -0400

Write tags to _WIN_TAGS property to make restarts less painful. Change *BarClick args order (bar names can have spaces)


Diffstat:
cmd/wm/client.c | 17+++++++++++++----
cmd/wm/event.c | 8++++----
cmd/wm/wm.c | 1+
cmd/wm/wm.h | 1+
rc/wmiirc | 3++-
5 files changed, 21 insertions(+), 9 deletions(-)

diff --git a/cmd/wm/client.c b/cmd/wm/client.c @@ -106,10 +106,7 @@ create_client(Window w, XWindowAttributes *wa) void set_client_state(Client * c, int state) { - long data[2]; - - data[0] = (long) state; - data[1] = (long) None; + long data[] = { state, None }; XChangeProperty(blz.display, c->win, wm_atom[WMState], wm_atom[WMState], 32, PropModeReplace, (unsigned char *) data, 2); } @@ -344,10 +341,19 @@ gravitate_client(Client *c, Bool invert) void manage_client(Client *c) { + XTextProperty tags; Client *trans; + tags.nitems = 0; + XGetTextProperty(blz.display, c->win, &tags, tags_atom); + if(c->trans && (trans = client_of_win(c->trans))) cext_strlcpy(c->tags, trans->tags, sizeof(c->tags)); + else if(tags.nitems) + cext_strlcpy(c->tags, (char *)tags.value, sizeof(c->tags)); + + XFree(tags.value); + if(!strlen(c->tags)) apply_rules(c); @@ -763,6 +769,9 @@ apply_tags(Client *c, const char *tags) if(!strlen(c->tags)) apply_tags(c, "nil"); + + XChangeProperty(blz.display, c->win, tags_atom, XA_STRING, 8, + PropModeReplace, c->tags, strlen(c->tags)); } static void diff --git a/cmd/wm/event.c b/cmd/wm/event.c @@ -73,15 +73,15 @@ handle_buttonrelease(XEvent *e) if(ev->window == barwin) { for(b=lbar; b; b=b->next) if(ispointinrect(ev->x, ev->y, &b->brush.rect)) { - snprintf(buf, sizeof(buf), "LeftBarClick %s %d\n", - b->name, ev->button); + snprintf(buf, sizeof(buf), "LeftBarClick %d %s\n", + ev->button, b->name); write_event(buf); return; } for(b=rbar; b; b=b->next) if(ispointinrect(ev->x, ev->y, &b->brush.rect)) { - snprintf(buf, sizeof(buf), "RightBarClick %s %d\n", - b->name, ev->button); + snprintf(buf, sizeof(buf), "RightBarClick %d %s\n", + ev->button, b->name); write_event(buf); return; } diff --git a/cmd/wm/wm.c b/cmd/wm/wm.c @@ -123,6 +123,7 @@ init_atoms() wm_atom[WMDelete] = XInternAtom(blz.display, "WM_DELETE_WINDOW", False); net_atom[NetSupported] = XInternAtom(blz.display, "_NET_SUPPORTED", False); net_atom[NetWMName] = XInternAtom(blz.display, "_NET_WM_NAME", False); + tags_atom = XInternAtom(blz.display, "_WIN_TAGS", False); XChangeProperty(blz.display, blz.root, net_atom[NetSupported], XA_ATOM, 32, PropModeReplace, (unsigned char *) net_atom, NetLast); diff --git a/cmd/wm/wm.h b/cmd/wm/wm.h @@ -181,6 +181,7 @@ char *user; Default def; Atom wm_atom[WMLast]; Atom net_atom[NetLast]; +Atom tags_atom; Cursor cursor[CurLast]; unsigned int valid_mask; unsigned int num_lock_mask; diff --git a/rc/wmiirc b/rc/wmiirc @@ -154,7 +154,8 @@ do xwrite /lbar/$1 $WMII_NORMCOLORS $1 ;; LeftBarClick) - xwrite /ctl view "$1";; + shift + xwrite /ctl view "$@";; Key) case "$1" in $MODKEY-$LEFT)