diff options
| -rw-r--r-- | config.def.h | 6 | ||||
| -rw-r--r-- | dwm.c | 13 | 
2 files changed, 12 insertions, 7 deletions
| diff --git a/config.def.h b/config.def.h index f0e44a7..cca37df 100644 --- a/config.def.h +++ b/config.def.h @@ -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) */ @@ -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; | 
