implemented class:inst:title matching
This commit is contained in:
		
							parent
							
								
									39ffc18635
								
							
						
					
					
						commit
						d6a6eca71d
					
				| 
						 | 
				
			
			@ -46,7 +46,7 @@ static Key key[] = { \
 | 
			
		|||
 | 
			
		||||
#define RULES \
 | 
			
		||||
static Rule rule[] = { \
 | 
			
		||||
	/* class:instance regex		tags regex	isfloat */ \
 | 
			
		||||
	/* class:instance:title regex	tags regex	isfloat */ \
 | 
			
		||||
	{ "Firefox.*",			"net",		False }, \
 | 
			
		||||
	{ "Gimp.*",			NULL,		True}, \
 | 
			
		||||
	{ "MPlayer.*",			NULL,		True}, \
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -47,11 +47,11 @@ static Key key[] = { \
 | 
			
		|||
	{ 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 \
 | 
			
		||||
static Rule rule[] = { \
 | 
			
		||||
	/* class:instance regex		tags regex	isfloat */ \
 | 
			
		||||
	/* class:instance:title regex	tags regex	isfloat */ \
 | 
			
		||||
	{ "Firefox.*",			"2",		False }, \
 | 
			
		||||
	{ "Gimp.*",			NULL,		True}, \
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										8
									
								
								tag.c
								
								
								
								
							
							
						
						
									
										8
									
								
								tag.c
								
								
								
								
							| 
						 | 
				
			
			@ -78,18 +78,18 @@ initrregs()
 | 
			
		|||
void
 | 
			
		||||
settags(Client *c)
 | 
			
		||||
{
 | 
			
		||||
	char classinst[256];
 | 
			
		||||
	char prop[512];
 | 
			
		||||
	unsigned int i, j;
 | 
			
		||||
	regmatch_t tmp;
 | 
			
		||||
	Bool matched = False;
 | 
			
		||||
	XClassHint 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_name ? ch.res_name : "");
 | 
			
		||||
				ch.res_name ? ch.res_name : "", c->name);
 | 
			
		||||
		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;
 | 
			
		||||
				for(j = 0; rreg[i].tregex && j < ntags; j++) {
 | 
			
		||||
					if(!regexec(rreg[i].tregex, tags[j], 1, &tmp, 0)) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue