| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -124,6 +124,7 @@ struct Monitor { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						int screen_number; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						float mfact; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						int by, btx;          /* bar geometry */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						int my, mh;           /* vertical screen size*/ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						int wx, wy, ww, wh;   /* window area  */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						unsigned int seltags; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						unsigned int sellt; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -209,6 +210,7 @@ static void toggleview(const Arg *arg); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					static void unmanage(Client *c); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					static void unmapnotify(XEvent *e); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					static void updategeom(void); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					static void updatebarpos(Monitor *m); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					static void updatebars(void); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					static void updatenumlockmask(void); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					static void updatesizehints(Client *c); | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -389,7 +391,7 @@ buttonpress(XEvent *e) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						XButtonPressedEvent *ev = &e->xbutton; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						click = ClkRootWin; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(ev->window == selmon->barwin) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(ev->window == selmon->barwin && ev->x >= selmon->btx) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							i = 0; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							x = selmon->btx; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							do | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -597,6 +599,7 @@ die(const char *errstr, ...) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					void | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					drawbar(Monitor *m) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						char buf[2]; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						int x; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						unsigned int i, occ = 0, urg = 0; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						unsigned long *col; | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -613,11 +616,11 @@ drawbar(Monitor *m) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						dc.x = 0; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#ifdef XINERAMA | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							/* | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							dc.w = TEXTW(m->symbol); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							drawtext(NULL, selmon == m ? dc.sel : dc.norm, False); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							buf[0] = m->screen_number + '0'; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							buf[1] = '\0'; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							dc.w = TEXTW(buf); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							drawtext(buf, selmon == m ? dc.sel : dc.norm, True); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							dc.x += dc.w; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							*/ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#endif /* XINERAMA */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						m->btx = dc.x; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -1525,7 +1528,7 @@ tile(Monitor *m) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					void | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					togglebar(const Arg *arg) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						selmon->showbar = !selmon->showbar; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						updategeom(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						updatebarpos(selmon); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						XMoveResizeWindow(dpy, selmon->barwin, selmon->wx, selmon->by, selmon->ww, bh); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						arrange(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -1614,6 +1617,19 @@ updatebars(void) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					void | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					updatebarpos(Monitor *m) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						m->wy = m->my; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						m->wh = m->mh; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(m->showbar) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							m->wh -= bh; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							m->by = m->topbar ? m->wy : m->wy + m->wh; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							m->wy = m->topbar ? m->wy + bh : m->wy; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						else | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							m->by = -bh; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					void | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					updategeom(void) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						int i, n; | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -1639,9 +1655,9 @@ updategeom(void) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							for(i = 0, m = newmons; m; m = m->next, i++) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								m->screen_number = info[i].screen_number; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								m->wx = info[i].x_org; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								m->wy = info[i].y_org; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								m->my = m->wy = info[i].y_org; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								m->ww = info[i].width; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								m->wh = info[i].height; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								m->mh = m->wh = info[i].height; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							XFree(info); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -1651,9 +1667,9 @@ updategeom(void) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							m->screen_number = 0; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							m->wx = sx; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							m->wy = sy; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							m->my = m->wy = sy; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							m->ww = sw; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							m->wh = sh; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							m->mh = m->wh = sh; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						/* bar geometry setup */ | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -1665,13 +1681,7 @@ updategeom(void) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							m->mfact = mfact; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							m->showbar = showbar; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							m->topbar = topbar; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if(m->showbar) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								m->wh -= bh; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								m->by = m->topbar ? m->wy : m->wy + m->wh; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								m->wy = m->topbar ? m->wy + bh : m->wy; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							else | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								m->by = -bh; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							updatebarpos(m); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							/* reassign all clients with same screen number */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							for(c = clients; c; c = c->next) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								if(c->m->screen_number == m->screen_number) | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |