extended rule to apply monitors if set up accordingly
This commit is contained in:
		@@ -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;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user