Browse Source

implemented class:inst:title matching

master
Anselm R. Garbe 19 years ago
parent
commit
d6a6eca71d
3 changed files with 8 additions and 8 deletions
  1. +1
    -1
      config.arg.h
  2. +3
    -3
      config.default.h
  3. +4
    -4
      tag.c

+ 1
- 1
config.arg.h View File

@ -46,7 +46,7 @@ static Key key[] = { \
#define RULES \ #define RULES \
static Rule rule[] = { \ static Rule rule[] = { \
/* class:instance regex tags regex isfloat */ \
/* class:instance:title regex tags regex isfloat */ \
{ "Firefox.*", "net", False }, \ { "Firefox.*", "net", False }, \
{ "Gimp.*", NULL, True}, \ { "Gimp.*", NULL, True}, \
{ "MPlayer.*", NULL, True}, \ { "MPlayer.*", NULL, True}, \


+ 3
- 3
config.default.h View File

@ -47,11 +47,11 @@ static Key key[] = { \
{ MODKEY|ShiftMask, XK_q, quit, { 0 } }, \ { MODKEY|ShiftMask, XK_q, quit, { 0 } }, \
}; };
/* Query class:instance for regex matching info with following command:
* xprop | awk -F'"' '/^WM_CLASS/ { printf "%s:%s\n", $4, $2 }'*/
/* Query class:instance:title for regex matching info with following command:
* xprop | awk -F '"' '/^WM_CLASS/ { printf("%s:%s:",$4,$2) }; /^WM_NAME/{ printf("%s\n",$2) }' */
#define RULES \ #define RULES \
static Rule rule[] = { \ static Rule rule[] = { \
/* class:instance regex tags regex isfloat */ \
/* class:instance:title regex tags regex isfloat */ \
{ "Firefox.*", "2", False }, \ { "Firefox.*", "2", False }, \
{ "Gimp.*", NULL, True}, \ { "Gimp.*", NULL, True}, \
}; };

+ 4
- 4
tag.c View File

@ -78,18 +78,18 @@ initrregs()
void void
settags(Client *c) settags(Client *c)
{ {
char classinst[256];
char prop[512];
unsigned int i, j; unsigned int i, j;
regmatch_t tmp; regmatch_t tmp;
Bool matched = False; Bool matched = False;
XClassHint ch; XClassHint ch;
if(XGetClassHint(dpy, c->win, &ch)) { if(XGetClassHint(dpy, c->win, &ch)) {
snprintf(classinst, sizeof(classinst), "%s:%s",
snprintf(prop, sizeof(prop), "%s:%s:%s",
ch.res_class ? ch.res_class : "", ch.res_class ? ch.res_class : "",
ch.res_name ? ch.res_name : "");
ch.res_name ? ch.res_name : "", c->name);
for(i = 0; !matched && i < len; i++) for(i = 0; !matched && i < len; i++)
if(rreg[i].clregex && !regexec(rreg[i].clregex, classinst, 1, &tmp, 0)) {
if(rreg[i].clregex && !regexec(rreg[i].clregex, prop, 1, &tmp, 0)) {
c->isfloat = rule[i].isfloat; c->isfloat = rule[i].isfloat;
for(j = 0; rreg[i].tregex && j < ntags; j++) { for(j = 0; rreg[i].tregex && j < ntags; j++) {
if(!regexec(rreg[i].tregex, tags[j], 1, &tmp, 0)) { if(!regexec(rreg[i].tregex, tags[j], 1, &tmp, 0)) {


Loading…
Cancel
Save