extended rule to apply monitors if set up accordingly
This commit is contained in:
		
							parent
							
								
									8420fb1ced
								
							
						
					
					
						commit
						758b100d12
					
				| @ -17,9 +17,9 @@ static const Bool topbar            = True;     /* False means bottom bar */ | |||||||
| static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }; | static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }; | ||||||
| 
 | 
 | ||||||
| static const Rule rules[] = { | static const Rule rules[] = { | ||||||
| 	/* class      instance    title       tags mask     isfloating */ | 	/* class      instance    title       tags mask     isfloating   monitor */ | ||||||
| 	{ "Gimp",     NULL,       NULL,       0,            True }, | 	{ "Gimp",     NULL,       NULL,       0,            True,        -1 }, | ||||||
| 	{ "Firefox",  NULL,       NULL,       1 << 8,       False }, | 	{ "Firefox",  NULL,       NULL,       1 << 8,       False,       -1 }, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| /* layout(s) */ | /* layout(s) */ | ||||||
|  | |||||||
							
								
								
									
										13
									
								
								dwm.c
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								dwm.c
									
									
									
									
									
								
							| @ -121,8 +121,8 @@ typedef struct { | |||||||
| } Layout; | } Layout; | ||||||
| 
 | 
 | ||||||
| struct Monitor { | struct Monitor { | ||||||
| 	int screen_number; |  | ||||||
| 	float mfact; | 	float mfact; | ||||||
|  | 	int num; | ||||||
| 	int by;               /* bar geometry */ | 	int by;               /* bar geometry */ | ||||||
| 	int mx, my, mw, mh;   /* screen size */ | 	int mx, my, mw, mh;   /* screen size */ | ||||||
| 	int wx, wy, ww, wh;   /* window area  */ | 	int wx, wy, ww, wh;   /* window area  */ | ||||||
| @ -145,6 +145,7 @@ typedef struct { | |||||||
| 	const char *title; | 	const char *title; | ||||||
| 	unsigned int tags; | 	unsigned int tags; | ||||||
| 	Bool isfloating; | 	Bool isfloating; | ||||||
|  | 	int monitor; | ||||||
| } Rule; | } Rule; | ||||||
| 
 | 
 | ||||||
| /* function declarations */ | /* function declarations */ | ||||||
| @ -238,7 +239,7 @@ static void zoom(const Arg *arg); | |||||||
| /* variables */ | /* variables */ | ||||||
| static char stext[256], ntext[8]; | static char stext[256], ntext[8]; | ||||||
| static int screen; | static int screen; | ||||||
| static int sw, sh;           /* X display screen geometry x, y, width, height */ | static int sw, sh;           /* X display screen geometry width, height */ | ||||||
| static int bh, blw = 0;      /* bar geometry */ | static int bh, blw = 0;      /* bar geometry */ | ||||||
| static int (*xerrorxlib)(Display *, XErrorEvent *); | static int (*xerrorxlib)(Display *, XErrorEvent *); | ||||||
| static unsigned int numlockmask = 0; | static unsigned int numlockmask = 0; | ||||||
| @ -276,6 +277,7 @@ void | |||||||
| applyrules(Client *c) { | applyrules(Client *c) { | ||||||
| 	unsigned int i; | 	unsigned int i; | ||||||
| 	const Rule *r; | 	const Rule *r; | ||||||
|  | 	Monitor *m; | ||||||
| 	XClassHint ch = { 0 }; | 	XClassHint ch = { 0 }; | ||||||
| 
 | 
 | ||||||
| 	/* rule matching */ | 	/* rule matching */ | ||||||
| @ -289,6 +291,9 @@ applyrules(Client *c) { | |||||||
| 			{ | 			{ | ||||||
| 				c->isfloating = r->isfloating; | 				c->isfloating = r->isfloating; | ||||||
| 				c->tags |= r->tags; | 				c->tags |= r->tags; | ||||||
|  | 				for(m = mons; m && m->num != r->monitor; m = m->next); | ||||||
|  | 				if(m) | ||||||
|  | 					c->mon = m; | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 		if(ch.res_class) | 		if(ch.res_class) | ||||||
| @ -1698,7 +1703,7 @@ updategeom(void) { | |||||||
| #ifdef XINERAMA | #ifdef XINERAMA | ||||||
| 	if(XineramaIsActive(dpy)) { | 	if(XineramaIsActive(dpy)) { | ||||||
| 		for(i = 0, m = newmons; m; m = m->next, i++) { | 		for(i = 0, m = newmons; m; m = m->next, i++) { | ||||||
| 			m->screen_number = info[i].screen_number; | 			m->num = info[i].screen_number; | ||||||
| 			m->mx = m->wx = info[i].x_org; | 			m->mx = m->wx = info[i].x_org; | ||||||
| 			m->my = m->wy = info[i].y_org; | 			m->my = m->wy = info[i].y_org; | ||||||
| 			m->mw = m->ww = info[i].width; | 			m->mw = m->ww = info[i].width; | ||||||
| @ -1710,7 +1715,7 @@ updategeom(void) { | |||||||
| #endif /* XINERAMA */ | #endif /* XINERAMA */ | ||||||
| 	/* default monitor setup */ | 	/* default monitor setup */ | ||||||
| 	{ | 	{ | ||||||
| 		m->screen_number = 0; | 		m->num = 0; | ||||||
| 		m->mx = m->wx = 0; | 		m->mx = m->wx = 0; | ||||||
| 		m->my = m->wy = 0; | 		m->my = m->wy = 0; | ||||||
| 		m->mw = m->ww = sw; | 		m->mw = m->ww = sw; | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Anselm R Garbe
						Anselm R Garbe