- if(XGetClassHint(dpy, c->win, &ch)) {
- snprintf(prop, sizeof(prop), "%s:%s:%s",
+ if(matched) {
+ for(i = 0; i < ntags; i++)
+ c->tags[i] = trans->tags[i];
+ }
+ else {
+ /* check if window has set a property */
+ name.nitems = 0;
+ XGetTextProperty(dpy, c->win, &name, dwmtags);
+ if(name.nitems && name.encoding == XA_STRING) {
+ strncpy(prop, (char *)name.value, sizeof prop - 1);
+ prop[sizeof prop - 1] = '\0';
+ XFree(name.value);
+ for(i = 0; i < ntags && i < sizeof prop - 1 && prop[i] != '\0'; i++)
+ if((c->tags[i] = prop[i] == '+'))
+ matched = True;
+ }
+ }
+ if(!matched) {
+ /* rule matching */
+ XGetClassHint(dpy, c->win, &ch);
+ snprintf(prop, sizeof prop, "%s:%s:%s",