diff options
Diffstat (limited to 'dwm.c')
| -rw-r--r-- | dwm.c | 13 | 
1 files changed, 9 insertions, 4 deletions
@@ -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;  | 
