diff --git a/src/client.c b/src/client.c index b538f8c..677f80e 100644 --- a/src/client.c +++ b/src/client.c @@ -703,6 +703,9 @@ client_update_attributes(Client *c) XChangeProperty(dpy, c->win, ATOM("_WMFS_SCREEN"), XA_CARDINAL, 32, PropModeReplace, (uchar*)&(c->screen), 1); + XChangeProperty(dpy, c->win, ATOM("_WMFS_ISFREE"), XA_CARDINAL, 32, + PropModeReplace, (uchar*)&(c->free), 1); + return; } diff --git a/src/layout.c b/src/layout.c index 877e04a..602845a 100644 --- a/src/layout.c +++ b/src/layout.c @@ -678,6 +678,7 @@ uicb_togglefree(uicb_t cmd) else sel->ogeo = sel->geo; + client_update_attributes(sel); tags[selscreen][seltag[selscreen]].layout.func(selscreen); diff --git a/src/wmfs.c b/src/wmfs.c index d9b87f5..55fc6b9 100644 --- a/src/wmfs.c +++ b/src/wmfs.c @@ -193,7 +193,7 @@ scan(void) XWindowAttributes wa; Window usl, usl2, *w = NULL; Atom rt; - int rf, tag = -1, screen = -1; + int rf, tag = -1, screen = -1, free = -1; ulong ir, il; uchar *ret; Client *c; @@ -218,12 +218,21 @@ scan(void) XFree(ret); } + if(XGetWindowProperty(dpy, w[i], ATOM("_WMFS_ISFREE"), 0, 32, + False, XA_CARDINAL, &rt, &rf, &ir, &il, &ret) == Success && ret) + { + free = *ret; + XFree(ret); + } + c = client_manage(w[i], &wa, False); if(tag != -1) c->tag = tag; if(screen != -1 && screen <= screen_count() - 1) c->screen = screen; + if(free != -1) + c->free = free; client_update_attributes(c); }