/* static */
-static char config[128];
+static char prop[128];
static void
attachstack(Client *c) {
}
Bool
-loadconfig(Client *c) {
+getprops(Client *c) {
unsigned int i;
Bool result = False;
- XTextProperty name;
-
- /* check if window has set a property */
- name.nitems = 0;
- XGetTextProperty(dpy, c->win, &name, dwmconfig);
- if(name.nitems && name.encoding == XA_STRING) {
- strncpy(config, (char *)name.value, sizeof config - 1);
- config[sizeof config - 1] = '\0';
- XFree(name.value);
- for(i = 0; i < ntags && i < sizeof config - 1 && config[i] != '\0'; i++)
- if((c->tags[i] = config[i] == '1'))
+
+ if(gettextprop(c->win, dwmprops, prop, sizeof prop)) {
+ for(i = 0; i < ntags && i < sizeof prop - 1 && prop[i] != '\0'; i++)
+ if((c->tags[i] = prop[i] == '1'))
result = True;
- if(i < sizeof config - 1 && config[i] != '\0')
- c->isfloating = config[i] == '1';
+ if(i < sizeof prop - 1 && prop[i] != '\0')
+ c->isfloating = prop[i] == '1';
}
return result;
}
if(t)
for(i = 0; i < ntags; i++)
c->tags[i] = t->tags[i];
- if(!loadconfig(c))
+ if(!getprops(c))
applyrules(c);
if(!c->isfloating)
c->isfloating = (rettrans == Success) || c->isfixed;
- saveconfig(c);
+ setprops(c);
attach(c);
attachstack(c);
XMoveResizeWindow(dpy, c->win, c->x, c->y, c->w, c->h); /* some windows require this */
}
void
-saveconfig(Client *c) {
+setprops(Client *c) {
unsigned int i;
- for(i = 0; i < ntags && i < sizeof config - 1; i++)
- config[i] = c->tags[i] ? '1' : '0';
- if(i < sizeof config - 1)
- config[i++] = c->isfloating ? '1' : '0';
- config[i] = '\0';
- XChangeProperty(dpy, c->win, dwmconfig, XA_STRING, 8,
- PropModeReplace, (unsigned char *)config, i);
+ for(i = 0; i < ntags && i < sizeof prop - 1; i++)
+ prop[i] = c->tags[i] ? '1' : '0';
+ if(i < sizeof prop - 1)
+ prop[i++] = c->isfloating ? '1' : '0';
+ prop[i] = '\0';
+ XChangeProperty(dpy, c->win, dwmprops, XA_STRING, 8,
+ PropModeReplace, (unsigned char *)prop, i);
}
void
void
updatetitle(Client *c) {
- char **list = NULL;
- int n;
- XTextProperty name;
-
- name.nitems = 0;
- c->name[0] = 0;
- XGetTextProperty(dpy, c->win, &name, netatom[NetWMName]);
- if(!name.nitems)
- XGetWMName(dpy, c->win, &name);
- if(!name.nitems)
- return;
- if(name.encoding == XA_STRING)
- strncpy(c->name, (char *)name.value, sizeof c->name - 1);
- else {
- if(XmbTextPropertyToTextList(dpy, &name, &list, &n) >= Success
- && n > 0 && *list)
- {
- strncpy(c->name, *list, sizeof c->name - 1);
- XFreeStringList(list);
- }
- }
- c->name[sizeof c->name - 1] = '\0';
- XFree(name.value);
+ if(!gettextprop(c->win, netatom[NetWMName], c->name, sizeof c->name))
+ gettextprop(c->win, wmatom[WMName], c->name, sizeof c->name);
}