|
|
@ -28,7 +28,7 @@ typedef struct {
|
|
|
|
TAGS
|
|
|
|
TAGS
|
|
|
|
RULES
|
|
|
|
RULES
|
|
|
|
|
|
|
|
|
|
|
|
static char prop[512];
|
|
|
|
static char buf[512];
|
|
|
|
static unsigned int nrules = 0;
|
|
|
|
static unsigned int nrules = 0;
|
|
|
|
static unsigned int nlayouts = 0;
|
|
|
|
static unsigned int nlayouts = 0;
|
|
|
|
static unsigned int ltidx = 0; /* default */
|
|
|
|
static unsigned int ltidx = 0; /* default */
|
|
|
@ -57,13 +57,13 @@ static void
|
|
|
|
setdwmprops(void) {
|
|
|
|
setdwmprops(void) {
|
|
|
|
unsigned int i;
|
|
|
|
unsigned int i;
|
|
|
|
|
|
|
|
|
|
|
|
for(i = 0; i < ntags && i < sizeof prop - 1; i++)
|
|
|
|
for(i = 0; i < ntags && i < sizeof buf - 1; i++)
|
|
|
|
prop[i] = seltags[i] ? '1' : '0';
|
|
|
|
buf[i] = seltags[i] ? '1' : '0';
|
|
|
|
if(i < sizeof prop - 1)
|
|
|
|
if(i < sizeof buf - 1)
|
|
|
|
prop[i++] = (char)ltidx + '0';
|
|
|
|
buf[i++] = (char)ltidx + '0';
|
|
|
|
prop[i] = '\0';
|
|
|
|
buf[i] = '\0';
|
|
|
|
XChangeProperty(dpy, root, dwmprops, XA_STRING, 8,
|
|
|
|
XChangeProperty(dpy, root, dwmprops, XA_STRING, 8,
|
|
|
|
PropModeReplace, (unsigned char *)prop, i);
|
|
|
|
PropModeReplace, (unsigned char *)buf, i);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
LAYOUTS
|
|
|
|
LAYOUTS
|
|
|
@ -81,11 +81,11 @@ applyrules(Client *c) {
|
|
|
|
|
|
|
|
|
|
|
|
/* rule matching */
|
|
|
|
/* rule matching */
|
|
|
|
XGetClassHint(dpy, c->win, &ch);
|
|
|
|
XGetClassHint(dpy, c->win, &ch);
|
|
|
|
snprintf(prop, sizeof prop, "%s:%s:%s",
|
|
|
|
snprintf(buf, sizeof buf, "%s:%s:%s",
|
|
|
|
ch.res_class ? ch.res_class : "",
|
|
|
|
ch.res_class ? ch.res_class : "",
|
|
|
|
ch.res_name ? ch.res_name : "", c->name);
|
|
|
|
ch.res_name ? ch.res_name : "", c->name);
|
|
|
|
for(i = 0; i < nrules; i++)
|
|
|
|
for(i = 0; i < nrules; i++)
|
|
|
|
if(regs[i].propregex && !regexec(regs[i].propregex, prop, 1, &tmp, 0)) {
|
|
|
|
if(regs[i].propregex && !regexec(regs[i].propregex, buf, 1, &tmp, 0)) {
|
|
|
|
c->isfloating = rules[i].isfloating;
|
|
|
|
c->isfloating = rules[i].isfloating;
|
|
|
|
for(j = 0; regs[i].tagregex && j < ntags; j++) {
|
|
|
|
for(j = 0; regs[i].tagregex && j < ntags; j++) {
|
|
|
|
if(!regexec(regs[i].tagregex, tags[j], 1, &tmp, 0)) {
|
|
|
|
if(!regexec(regs[i].tagregex, tags[j], 1, &tmp, 0)) {
|
|
|
@ -219,12 +219,12 @@ void
|
|
|
|
getdwmprops(void) {
|
|
|
|
getdwmprops(void) {
|
|
|
|
unsigned int i;
|
|
|
|
unsigned int i;
|
|
|
|
|
|
|
|
|
|
|
|
if(gettextprop(root, dwmprops, prop, sizeof prop)) {
|
|
|
|
if(gettextprop(root, dwmprops, buf, sizeof buf)) {
|
|
|
|
for(i = 0; i < ntags && i < sizeof prop - 1 && prop[i] != '\0'; i++)
|
|
|
|
for(i = 0; i < ntags && i < sizeof buf - 1 && buf[i] != '\0'; i++)
|
|
|
|
seltags[i] = prop[i] == '1';
|
|
|
|
seltags[i] = buf[i] == '1';
|
|
|
|
if(i < sizeof prop - 1 && prop[i] != '\0') {
|
|
|
|
if(i < sizeof buf - 1 && buf[i] != '\0') {
|
|
|
|
if((unsigned int)(prop[i] - '0') < nlayouts)
|
|
|
|
if((unsigned int)(buf[i] - '0') < nlayouts)
|
|
|
|
ltidx = prop[i] - '0';
|
|
|
|
ltidx = buf[i] - '0';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|