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 Rule rules[] = {
 | 
			
		||||
	/* class      instance    title       tags mask     isfloating */
 | 
			
		||||
	{ "Gimp",     NULL,       NULL,       0,            True },
 | 
			
		||||
	{ "Firefox",  NULL,       NULL,       1 << 8,       False },
 | 
			
		||||
	/* class      instance    title       tags mask     isfloating   monitor */
 | 
			
		||||
	{ "Gimp",     NULL,       NULL,       0,            True,        -1 },
 | 
			
		||||
	{ "Firefox",  NULL,       NULL,       1 << 8,       False,       -1 },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* layout(s) */
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										13
									
								
								dwm.c
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								dwm.c
									
									
									
									
									
								
							@ -121,8 +121,8 @@ typedef struct {
 | 
			
		||||
} Layout;
 | 
			
		||||
 | 
			
		||||
struct Monitor {
 | 
			
		||||
	int screen_number;
 | 
			
		||||
	float mfact;
 | 
			
		||||
	int num;
 | 
			
		||||
	int by;               /* bar geometry */
 | 
			
		||||
	int mx, my, mw, mh;   /* screen size */
 | 
			
		||||
	int wx, wy, ww, wh;   /* window area  */
 | 
			
		||||
@ -145,6 +145,7 @@ typedef struct {
 | 
			
		||||
	const char *title;
 | 
			
		||||
	unsigned int tags;
 | 
			
		||||
	Bool isfloating;
 | 
			
		||||
	int monitor;
 | 
			
		||||
} Rule;
 | 
			
		||||
 | 
			
		||||
/* function declarations */
 | 
			
		||||
@ -238,7 +239,7 @@ static void zoom(const Arg *arg);
 | 
			
		||||
/* variables */
 | 
			
		||||
static char stext[256], ntext[8];
 | 
			
		||||
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 (*xerrorxlib)(Display *, XErrorEvent *);
 | 
			
		||||
static unsigned int numlockmask = 0;
 | 
			
		||||
@ -276,6 +277,7 @@ void
 | 
			
		||||
applyrules(Client *c) {
 | 
			
		||||
	unsigned int i;
 | 
			
		||||
	const Rule *r;
 | 
			
		||||
	Monitor *m;
 | 
			
		||||
	XClassHint ch = { 0 };
 | 
			
		||||
 | 
			
		||||
	/* rule matching */
 | 
			
		||||
@ -289,6 +291,9 @@ applyrules(Client *c) {
 | 
			
		||||
			{
 | 
			
		||||
				c->isfloating = r->isfloating;
 | 
			
		||||
				c->tags |= r->tags;
 | 
			
		||||
				for(m = mons; m && m->num != r->monitor; m = m->next);
 | 
			
		||||
				if(m)
 | 
			
		||||
					c->mon = m;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		if(ch.res_class)
 | 
			
		||||
@ -1698,7 +1703,7 @@ updategeom(void) {
 | 
			
		||||
#ifdef XINERAMA
 | 
			
		||||
	if(XineramaIsActive(dpy)) {
 | 
			
		||||
		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->my = m->wy = info[i].y_org;
 | 
			
		||||
			m->mw = m->ww = info[i].width;
 | 
			
		||||
@ -1710,7 +1715,7 @@ updategeom(void) {
 | 
			
		||||
#endif /* XINERAMA */
 | 
			
		||||
	/* default monitor setup */
 | 
			
		||||
	{
 | 
			
		||||
		m->screen_number = 0;
 | 
			
		||||
		m->num = 0;
 | 
			
		||||
		m->mx = m->wx = 0;
 | 
			
		||||
		m->my = m->wy = 0;
 | 
			
		||||
		m->mw = m->ww = sw;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user