jokerboy avatar jokerboy committed fa5e3da

updates

Comments (0)

Files changed (27)

01-dwm-6.0-pertag2.diff

---- a/dwm.c	2012-03-17 19:14:17.000000000 +0200
-+++ b/dwm.c	2012-03-17 20:51:15.433463299 +0200
+--- a/dwm.c	2012-03-25 18:49:35.000000000 +0300
++++ b/dwm.c	2012-03-28 22:57:19.134221847 +0300
 @@ -126,8 +126,6 @@ typedef struct {
  
  struct Monitor {
  	const char *class;
  	const char *instance;
  	const char *title;
-@@ -251,6 +261,7 @@ static int xerror(Display *dpy, XErrorEv
+@@ -252,6 +262,7 @@ static int xerror(Display *dpy, XErrorEv
  static int xerrordummy(Display *dpy, XErrorEvent *ee);
  static int xerrorstart(Display *dpy, XErrorEvent *ee);
  static void zoom(const Arg *arg);
  
  /* variables */
  static const char broken[] = "broken";
-@@ -441,7 +452,7 @@ buttonpress(XEvent *e) {
+@@ -442,7 +453,7 @@ buttonpress(XEvent *e) {
  	if(ev->window == selmon->barwin) {
  		i = x = 0;
  		do
  		while(ev->x >= x && ++i < LENGTH(tags));
  		if(i < LENGTH(tags)) {
  			click = ClkTagBar;
-@@ -513,6 +524,9 @@ cleanupmon(Monitor *mon) {
+@@ -515,6 +526,9 @@ cleanupmon(Monitor *mon) {
  	}
  	XUnmapWindow(dpy, mon->barwin);
  	XDestroyWindow(dpy, mon->barwin);
  	free(mon);
  }
  
-@@ -532,6 +546,7 @@ void
+@@ -534,6 +548,7 @@ void
  clientmessage(XEvent *e) {
  	XClientMessageEvent *cme = &e->xclient;
  	Client *c = wintoclient(cme->window);
  
  	if(!c)
  		return;
-@@ -544,6 +559,10 @@ clientmessage(XEvent *e) {
+@@ -546,6 +561,10 @@ clientmessage(XEvent *e) {
  		if(!ISVISIBLE(c)) {
  			c->mon->seltags ^= 1;
  			c->mon->tagset[c->mon->seltags] = c->tags;
  		}
  		pop(c);
  	}
-@@ -646,17 +665,31 @@ configurerequest(XEvent *e) {
+@@ -648,17 +667,31 @@ configurerequest(XEvent *e) {
  Monitor *
  createmon(void) {
  	Monitor *m;
  	return m;
  }
  
-@@ -729,9 +762,9 @@ drawbar(Monitor *m) {
+@@ -731,9 +764,9 @@ drawbar(Monitor *m) {
  	}
  	dc.x = 0;
  	for(i = 0; i < LENGTH(tags); i++) {
  		drawsquare(m == selmon && selmon->sel && selmon->sel->tags & 1 << i,
  		           occ & 1 << i, urg & 1 << i, col);
  		dc.x += dc.w;
-@@ -1028,7 +1061,7 @@ grabkeys(void) {
+@@ -1032,7 +1065,7 @@ grabkeys(void) {
  
  void
  incnmaster(const Arg *arg) {
  	arrange(selmon);
  }
  
-@@ -1565,7 +1598,7 @@ setlayout(const Arg *arg) {
+@@ -1575,7 +1608,7 @@ setlayout(const Arg *arg) {
  	if(!arg || !arg->v || arg->v != selmon->lt[selmon->sellt])
  		selmon->sellt ^= 1;
  	if(arg && arg->v)
  	strncpy(selmon->ltsymbol, selmon->lt[selmon->sellt]->symbol, sizeof selmon->ltsymbol);
  	if(selmon->sel)
  		arrange(selmon);
-@@ -1580,10 +1613,10 @@ setmfact(const Arg *arg) {
+@@ -1590,10 +1623,10 @@ setmfact(const Arg *arg) {
  
  	if(!arg || !selmon->lt[selmon->sellt]->arrange)
  		return;
  	arrange(selmon);
  }
  
-@@ -1717,13 +1750,13 @@ tile(Monitor *m) {
+@@ -1729,13 +1762,13 @@ tile(Monitor *m) {
  	if(n == 0)
  		return;
  
  			resize(c, m->wx, m->wy + my, mw - (2*c->bw), h - (2*c->bw), False);
  			my += HEIGHT(c);
  		}
-@@ -1757,13 +1790,24 @@ togglefloating(const Arg *arg) {
+@@ -1769,13 +1802,24 @@ togglefloating(const Arg *arg) {
  
  void
  toggletag(const Arg *arg) {
  		focus(NULL);
  		arrange(selmon);
  	}
-@@ -2053,11 +2097,26 @@ updatewmhints(Client *c) {
+@@ -2081,11 +2125,26 @@ updatewmhints(Client *c) {
  
  void
  view(const Arg *arg) {
  	focus(NULL);
  	arrange(selmon);
  }
-@@ -2136,6 +2195,32 @@ zoom(const Arg *arg) {
+@@ -2164,6 +2223,32 @@ zoom(const Arg *arg) {
  	pop(c);
  }
  

02-dwm-6.0-push.diff

---- a/dwm.c	2012-03-17 20:51:15.462463301 +0200
-+++ b/dwm.c	2012-03-17 20:51:15.465463302 +0200
-@@ -262,6 +262,9 @@ static int xerrordummy(Display *dpy, XEr
+--- a/dwm.c	2012-03-28 22:57:19.141221850 +0300
++++ b/dwm.c	2012-03-28 22:57:19.144221849 +0300
+@@ -263,6 +263,9 @@ static int xerrordummy(Display *dpy, XEr
  static int xerrorstart(Display *dpy, XErrorEvent *ee);
  static void zoom(const Arg *arg);
  static void bstack(Monitor *m);
  
  /* variables */
  static const char broken[] = "broken";
-@@ -2221,6 +2224,65 @@ bstack(Monitor *m) {
+@@ -2249,6 +2252,65 @@ bstack(Monitor *m) {
  		}
  }
  

03-dwm-6.0-cycle.diff

---- a/dwm.c	2012-03-17 20:51:15.477463302 +0200
-+++ b/dwm.c	2012-03-17 20:51:15.481463303 +0200
-@@ -265,6 +265,9 @@ static void bstack(Monitor *m);
+--- a/dwm.c	2012-03-28 22:57:19.151221850 +0300
++++ b/dwm.c	2012-03-28 22:57:19.154221849 +0300
+@@ -266,6 +266,9 @@ static void bstack(Monitor *m);
  static Client *prevtiled(Client *c);
  static void pushup(const Arg *arg);
  static void pushdown(const Arg *arg);
  
  /* variables */
  static const char broken[] = "broken";
-@@ -2284,6 +2287,42 @@ pushdown(const Arg *arg) {
+@@ -2312,6 +2315,42 @@ pushdown(const Arg *arg) {
  }
  
  int

04-dwm-6.0-gaplessgrid.diff

---- a/dwm.c	2012-03-17 20:51:15.488463303 +0200
-+++ b/dwm.c	2012-03-17 20:51:15.491463303 +0200
-@@ -268,6 +268,7 @@ static void pushdown(const Arg *arg);
+--- a/dwm.c	2012-03-28 22:57:19.160221851 +0300
++++ b/dwm.c	2012-03-28 22:57:19.163221849 +0300
+@@ -269,6 +269,7 @@ static void pushdown(const Arg *arg);
  static void cycle(const Arg *arg);
  static int shifttag(int dist);
  static void tagcycle(const Arg *arg);
  
  /* variables */
  static const char broken[] = "broken";
-@@ -2322,6 +2323,40 @@ tagcycle(const Arg *arg) {
+@@ -2350,6 +2351,40 @@ tagcycle(const Arg *arg) {
  	view(&a);
  }
  

05-dwm-6.0-pidgin.diff

---- a/dwm.c	2012-03-17 20:51:15.498463304 +0200
-+++ b/dwm.c	2012-03-17 20:51:15.501463304 +0200
-@@ -269,6 +269,7 @@ static void cycle(const Arg *arg);
+--- a/dwm.c	2012-03-28 22:57:19.170221851 +0300
++++ b/dwm.c	2012-03-28 22:57:19.173221851 +0300
+@@ -270,6 +270,7 @@ static void cycle(const Arg *arg);
  static int shifttag(int dist);
  static void tagcycle(const Arg *arg);
  static void gaplessgrid(Monitor *m);
  
  /* variables */
  static const char broken[] = "broken";
-@@ -2356,6 +2357,56 @@ gaplessgrid(Monitor *m) {
+@@ -2384,6 +2385,56 @@ gaplessgrid(Monitor *m) {
  		}
  	}
  }

06-dwm-6.0-monocle_count.diff

---- a/dwm.c	2012-03-17 20:51:15.508463304 +0200
-+++ b/dwm.c	2012-03-17 20:51:15.511463304 +0200
-@@ -761,6 +761,7 @@ drawbar(Monitor *m) {
+--- a/dwm.c	2012-03-28 22:57:19.179221849 +0300
++++ b/dwm.c	2012-03-28 22:57:19.182221852 +0300
+@@ -763,6 +763,7 @@ drawbar(Monitor *m) {
  	int x;
  	unsigned int i, occ = 0, urg = 0;
  	unsigned long *col;
  	Client *c;
  
  	for(c = m->clients; c; c = c->next) {
-@@ -777,6 +778,14 @@ drawbar(Monitor *m) {
+@@ -779,6 +780,14 @@ drawbar(Monitor *m) {
  		           occ & 1 << i, urg & 1 << i, col);
  		dc.x += dc.w;
  	}
  	dc.w = blw = TEXTW(m->ltsymbol);
  	drawtext(m->ltsymbol, dc.norm, False);
  	dc.x += dc.w;
-@@ -1232,14 +1241,8 @@ maprequest(XEvent *e) {
+@@ -1238,14 +1247,8 @@ maprequest(XEvent *e) {
  
  void
  monocle(Monitor *m) {

07-dwm-6.0-monocle_borderless.diff

---- a/dwm.c	2012-03-17 20:51:15.521463305 +0200
-+++ b/dwm.c	2012-03-17 20:51:15.524463305 +0200
-@@ -1403,7 +1403,11 @@ resizeclient(Client *c, int x, int y, in
+--- a/dwm.c	2012-03-28 22:57:19.189221851 +0300
++++ b/dwm.c	2012-03-28 22:57:19.191221853 +0300
+@@ -1409,7 +1409,11 @@ resizeclient(Client *c, int x, int y, in
  	c->oldy = c->y; c->y = wc.y = y;
  	c->oldw = c->w; c->w = wc.width = w;
  	c->oldh = c->h; c->h = wc.height = h;

08-dwm-6.0-clicktofocus.diff

---- a/dwm.c	2012-03-17 20:51:15.530463306 +0200
-+++ b/dwm.c	2012-03-17 20:51:15.533463306 +0200
-@@ -864,6 +864,8 @@ drawtext(const char *text, unsigned long
+--- a/dwm.c	2012-03-28 22:57:19.198221851 +0300
++++ b/dwm.c	2012-03-28 22:57:19.201221853 +0300
+@@ -866,6 +866,8 @@ drawtext(const char *text, unsigned long
  
  void
  enternotify(XEvent *e) {
  	Client *c;
  	Monitor *m;
  	XCrossingEvent *ev = &e->xcrossing;
-@@ -1249,6 +1251,8 @@ monocle(Monitor *m) {
+@@ -1255,6 +1257,8 @@ monocle(Monitor *m) {
  
  void
  motionnotify(XEvent *e) {

09-dwm-6.0-viewontag.diff

---- a/dwm.c	2012-03-17 20:51:15.540463306 +0200
-+++ b/dwm.c	2012-03-17 20:51:15.543463306 +0200
-@@ -1739,6 +1739,8 @@ tag(const Arg *arg) {
+--- a/dwm.c	2012-03-28 22:57:19.207221853 +0300
++++ b/dwm.c	2012-03-28 22:57:19.210221851 +0300
+@@ -1751,6 +1751,8 @@ tag(const Arg *arg) {
  		selmon->sel->tags = arg->ui & TAGMASK;
  		focus(NULL);
  		arrange(selmon);

10-dwm-6.0-scratchpad.diff

---- a/dwm.c	2012-03-17 20:51:15.550463307 +0200
-+++ b/dwm.c	2012-03-17 20:51:15.553463307 +0200
-@@ -270,6 +270,7 @@ static int shifttag(int dist);
+--- a/dwm.c	2012-03-28 22:57:19.217221854 +0300
++++ b/dwm.c	2012-03-28 22:57:19.219221852 +0300
+@@ -271,6 +271,7 @@ static int shifttag(int dist);
  static void tagcycle(const Arg *arg);
  static void gaplessgrid(Monitor *m);
  static void pidgin(Monitor *m);
  
  /* variables */
  static const char broken[] = "broken";
-@@ -306,6 +307,8 @@ static Window root;
+@@ -307,6 +308,8 @@ static Window root;
  /* configuration, allows nested code to access above variables */
  #include "config.h"
  
  /* compile-time check if all tags fit into an unsigned int bit array. */
  struct NumTags { char limitexceeded[LENGTH(tags) > 31 ? -1 : 1]; };
  
-@@ -1194,6 +1197,14 @@ manage(Window w, XWindowAttributes *wa)
+@@ -1198,6 +1201,14 @@ manage(Window w, XWindowAttributes *wa)
  	           && (c->x + (c->w / 2) < c->mon->wx + c->mon->ww)) ? bh : c->mon->my);
  	c->bw = borderpx;
  
  	wc.border_width = c->bw;
  	XConfigureWindow(dpy, w, CWBorderWidth, &wc);
  	XSetWindowBorder(dpy, w, dc.norm[ColBorder]);
-@@ -2421,6 +2432,28 @@ pidgin(Monitor *m) {
+@@ -2449,6 +2460,28 @@ pidgin(Monitor *m) {
  	}
  }
  

11-dwm-6.0-togglemax.diff

---- a/dwm.c	2012-03-17 20:51:15.560463308 +0200
-+++ b/dwm.c	2012-03-17 20:51:15.564463308 +0200
-@@ -271,6 +271,7 @@ static void tagcycle(const Arg *arg);
+--- a/dwm.c	2012-03-28 22:57:19.227221853 +0300
++++ b/dwm.c	2012-03-28 22:57:19.229221852 +0300
+@@ -272,6 +272,7 @@ static void tagcycle(const Arg *arg);
  static void gaplessgrid(Monitor *m);
  static void pidgin(Monitor *m);
  static void togglescratch(const Arg *arg);
  
  /* variables */
  static const char broken[] = "broken";
-@@ -2454,6 +2455,38 @@ togglescratch(const Arg *arg) {
+@@ -2482,6 +2483,38 @@ togglescratch(const Arg *arg) {
  		spawn(arg);
  }
  

12-dwm-6.0-autoresize.diff

---- a/dwm.c	2012-03-17 20:51:15.571463308 +0200
-+++ b/dwm.c	2012-03-17 20:51:15.574463308 +0200
+--- a/dwm.c	2012-03-28 22:57:19.236221855 +0300
++++ b/dwm.c	2012-03-28 22:57:19.239221855 +0300
 @@ -90,7 +90,7 @@ struct Client {
  	int basew, baseh, incw, inch, maxw, maxh, minw, minh;
  	int bw, oldbw;
  	Client *next;
  	Client *snext;
  	Monitor *mon;
-@@ -657,6 +657,8 @@ configurerequest(XEvent *e) {
+@@ -659,6 +659,8 @@ configurerequest(XEvent *e) {
  				configure(c);
  			if(ISVISIBLE(c))
  				XMoveResizeWindow(dpy, c->win, c->x, c->y, c->w, c->h);
  		}
  		else
  			configure(c);
-@@ -1714,7 +1716,12 @@ showhide(Client *c) {
+@@ -1726,7 +1728,12 @@ showhide(Client *c) {
  	if(!c)
  		return;
  	if(ISVISIBLE(c)) { /* show clients top down */

13-dwm-6.0-increase_mfact_limit.diff

---- a/dwm.c	2012-03-17 20:51:15.601463310 +0200
-+++ b/dwm.c	2012-03-17 20:51:15.604463310 +0200
-@@ -1647,7 +1647,7 @@ setmfact(const Arg *arg) {
+--- a/dwm.c	2012-03-28 22:57:19.246221856 +0300
++++ b/dwm.c	2012-03-28 22:57:19.249221856 +0300
+@@ -1657,7 +1657,7 @@ setmfact(const Arg *arg) {
  	if(!arg || !selmon->lt[selmon->sellt]->arrange)
  		return;
  	f = arg->f < 1.0 ? arg->f + selmon->mfacts[selmon->curtag] : arg->f - 1.0;

14-dwm-6.0-remember-tags.diff

---- a/dwm.c	2012-03-17 20:51:15.611463311 +0200
-+++ b/dwm.c	2012-03-17 20:51:15.614463311 +0200
+--- a/dwm.c	2012-03-28 22:57:19.255221857 +0300
++++ b/dwm.c	2012-03-28 22:57:19.258221856 +0300
 @@ -62,6 +62,7 @@ enum { NetSupported, NetWMName, NetWMSta
         NetWMFullscreen, NetActiveWindow, NetWMWindowType,
-        NetWMWindowTypeDialog, NetLast };     /* EWMH atoms */
+        NetWMWindowTypeDialog, NetClientList, NetLast };     /* EWMH atoms */
  enum { WMProtocols, WMDelete, WMState, WMTakeFocus, WMLast }; /* default atoms */
 +enum { DWMTags, DWMLast };                              /* DWM atoms */
  enum { ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle,
         ClkClientWin, ClkRootWin, ClkLast };             /* clicks */
  
-@@ -272,6 +273,7 @@ static void gaplessgrid(Monitor *m);
+@@ -273,6 +274,7 @@ static void gaplessgrid(Monitor *m);
  static void pidgin(Monitor *m);
  static void togglescratch(const Arg *arg);
  static void togglemax(const Arg *arg);
  
  /* variables */
  static const char broken[] = "broken";
-@@ -297,7 +299,7 @@ static void (*handler[LASTEvent]) (XEven
+@@ -298,7 +300,7 @@ static void (*handler[LASTEvent]) (XEven
  	[PropertyNotify] = propertynotify,
  	[UnmapNotify] = unmapnotify
  };
  static Bool running = True;
  static Cursor cursor[CurLast];
  static Display *dpy;
-@@ -1170,6 +1172,10 @@ manage(Window w, XWindowAttributes *wa)
+@@ -1174,6 +1176,10 @@ manage(Window w, XWindowAttributes *wa)
  	Client *c, *t = NULL;
  	Window trans = None;
  	XWindowChanges wc;
  
  	if(!(c = calloc(1, sizeof(Client))))
  		die("fatal: could not malloc() %u bytes\n", sizeof(Client));
-@@ -1182,7 +1188,13 @@ manage(Window w, XWindowAttributes *wa)
+@@ -1186,7 +1192,13 @@ manage(Window w, XWindowAttributes *wa)
  	else {
  		c->mon = selmon;
  		applyrules(c);
  	/* geometry */
  	c->x = c->oldx = wa->x;
  	c->y = c->oldy = wa->y;
-@@ -1680,6 +1692,7 @@ setup(void) {
- 	netatom[NetWMFullscreen] = XInternAtom(dpy, "_NET_WM_STATE_FULLSCREEN", False);
+@@ -1691,6 +1703,7 @@ setup(void) {
  	netatom[NetWMWindowType] = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE", False);
  	netatom[NetWMWindowTypeDialog] = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_DIALOG", False);
+ 	netatom[NetClientList] = XInternAtom(dpy, "_NET_CLIENT_LIST", False);
 +	dwmatom[DWMTags] = XInternAtom(dpy, "_DWM_TAGS", False);
  	/* init cursors */
  	cursor[CurNormal] = XCreateFontCursor(dpy, XC_left_ptr);
  	cursor[CurResize] = XCreateFontCursor(dpy, XC_sizing);
-@@ -1756,6 +1769,7 @@ void
+@@ -1768,6 +1781,7 @@ void
  tag(const Arg *arg) {
  	if(selmon->sel && arg->ui & TAGMASK) {
  		selmon->sel->tags = arg->ui & TAGMASK;
  		focus(NULL);
  		arrange(selmon);
  		if(viewontag)
-@@ -1848,6 +1862,7 @@ toggletag(const Arg *arg) {
+@@ -1860,6 +1874,7 @@ toggletag(const Arg *arg) {
  		}
  		selmon->sel->tags = newtags;
  		selmon->lt[selmon->sellt] = selmon->lts[selmon->curtag];
  		focus(NULL);
  		arrange(selmon);
  	}
-@@ -2494,6 +2509,12 @@ togglemax(const Arg *arg) {
+@@ -2522,6 +2537,12 @@ togglemax(const Arg *arg) {
  	}
  }
  

15-dwm-6.0-centred-floating.diff

---- a/dwm.c	2012-03-17 20:51:15.622463311 +0200
-+++ b/dwm.c	2012-03-17 20:51:15.624463312 +0200
+--- a/dwm.c	2012-03-28 22:57:19.266221857 +0300
++++ b/dwm.c	2012-03-28 22:57:19.268221857 +0300
 @@ -91,7 +91,7 @@ struct Client {
  	int basew, baseh, incw, inch, maxw, maxh, minw, minh;
  	int bw, oldbw;
  	int monitor;
  } Rule;
  
-@@ -326,6 +327,7 @@ applyrules(Client *c) {
+@@ -327,6 +328,7 @@ applyrules(Client *c) {
  
  	/* rule matching */
  	c->isfloating = c->tags = 0;
  	XGetClassHint(dpy, c->win, &ch);
  	class    = ch.res_class ? ch.res_class : broken;
  	instance = ch.res_name  ? ch.res_name  : broken;
-@@ -337,6 +339,7 @@ applyrules(Client *c) {
+@@ -338,6 +340,7 @@ applyrules(Client *c) {
  		&& (!r->instance || strstr(instance, r->instance)))
  		{
  			c->isfloating = r->isfloating;
  			c->tags |= r->tags;
  			for(m = mons; m && m->num != r->monitor; m = m->next);
  			if(m)
-@@ -1196,8 +1199,14 @@ manage(Window w, XWindowAttributes *wa)
+@@ -1200,8 +1203,14 @@ manage(Window w, XWindowAttributes *wa)
  	}
  	settagsatom(c->win, c->tags);
  	/* geometry */

16-dwm-6.0-focusurgent.diff

---- a/dwm.c	2012-03-17 20:51:15.631463312 +0200
-+++ b/dwm.c	2012-03-17 20:51:15.634463312 +0200
-@@ -275,6 +275,7 @@ static void pidgin(Monitor *m);
+--- a/dwm.c	2012-03-28 22:57:19.275221855 +0300
++++ b/dwm.c	2012-03-28 22:57:19.278221858 +0300
+@@ -276,6 +276,7 @@ static void pidgin(Monitor *m);
  static void togglescratch(const Arg *arg);
  static void togglemax(const Arg *arg);
  static void settagsatom(Window w, unsigned int tags);
  
  /* variables */
  static const char broken[] = "broken";
-@@ -2524,6 +2525,32 @@ settagsatom(Window w, unsigned int tags)
+@@ -2552,6 +2553,32 @@ settagsatom(Window w, unsigned int tags)
  	                PropModeReplace, (unsigned char*)&tags, 1);
  }
  

17-dwm-6.0-statuscolors.diff

---- a/dwm.c	2012-03-17 20:51:15.641463313 +0200
-+++ b/dwm.c	2012-03-17 20:51:15.645463313 +0200
+--- a/dwm.c	2012-03-28 22:57:19.285221857 +0300
++++ b/dwm.c	2012-03-28 22:57:19.288221859 +0300
 @@ -54,6 +54,7 @@
  #define HEIGHT(X)               ((X)->h + 2 * (X)->bw)
  #define TAGMASK                 ((1 << LENGTH(tags)) - 1)
  static void enternotify(XEvent *e);
  static void expose(XEvent *e);
  static void focus(Client *c);
-@@ -784,10 +785,9 @@ drawbar(Monitor *m) {
+@@ -786,10 +787,9 @@ drawbar(Monitor *m) {
  	dc.x = 0;
  	for(i = 0; i < LENGTH(tags); i++) {
  		dc.w = TEXTW(tags[i].name);
  		dc.x += dc.w;
  	}
  	if(m->lt[m->sellt]->arrange == monocle) {
-@@ -798,30 +798,30 @@ drawbar(Monitor *m) {
+@@ -800,30 +800,30 @@ drawbar(Monitor *m) {
  			s = a;
  		snprintf(m->ltsymbol, sizeof m->ltsymbol, "[%d/%d]", s, a);
  	}
  	}
  	XCopyArea(dpy, dc.drawable, m->barwin, dc.gc, 0, 0, m->ww, bh, 0, 0);
  	XSync(dpy, False);
-@@ -836,10 +836,34 @@ drawbars(void) {
+@@ -838,10 +838,34 @@ drawbars(void) {
  }
  
  void
  	x = (dc.font.ascent + dc.font.descent + 2) / 4;
  	if(filled)
  		XFillRectangle(dpy, dc.drawable, dc.gc, dc.x+1, dc.y+1, x+1, x+1);
-@@ -848,17 +872,17 @@ drawsquare(Bool filled, Bool empty, Bool
+@@ -850,17 +874,17 @@ drawsquare(Bool filled, Bool empty, Bool
  }
  
  void
  	x = dc.x + (h / 2);
  	/* shorten text if necessary */
  	for(len = MIN(olen, sizeof buf); len && textnw(text, len) > dc.w - h; len--);
-@@ -867,7 +891,7 @@ drawtext(const char *text, unsigned long
+@@ -869,7 +893,7 @@ drawtext(const char *text, unsigned long
  	memcpy(buf, text, len);
  	if(len < olen)
  		for(i = len; i && i > len - 3; buf[--i] = '.');
  	if(dc.font.set)
  		XmbDrawString(dpy, dc.drawable, dc.font.set, dc.gc, x, y, buf, len);
  	else
-@@ -919,7 +943,7 @@ focus(Client *c) {
+@@ -921,7 +945,7 @@ focus(Client *c) {
  		detachstack(c);
  		attachstack(c);
  		grabbuttons(c, True);
 +		XSetWindowBorder(dpy, c->win, dc.colors[1][ColBorder]);
  		setfocus(c);
  	}
- 	else
-@@ -1232,7 +1256,7 @@ manage(Window w, XWindowAttributes *wa)
+ 	else {
+@@ -1236,7 +1260,7 @@ manage(Window w, XWindowAttributes *wa)
  		c->tags &= TAGMASK;
  	wc.border_width = c->bw;
  	XConfigureWindow(dpy, w, CWBorderWidth, &wc);
  	configure(c); /* propagates border_width, if size doesn't change */
  	updatewindowtype(c);
  	updatesizehints(c);
-@@ -1708,12 +1732,11 @@ setup(void) {
+@@ -1719,12 +1743,11 @@ setup(void) {
  	cursor[CurResize] = XCreateFontCursor(dpy, XC_sizing);
  	cursor[CurMove] = XCreateFontCursor(dpy, XC_fleur);
  	/* init appearance */
  	dc.drawable = XCreatePixmap(dpy, root, DisplayWidth(dpy, screen), bh, DefaultDepth(dpy, screen));
  	dc.gc = XCreateGC(dpy, root, 0, NULL);
  	XSetLineAttributes(dpy, dc.gc, 1, LineSolid, CapButt, JoinMiter);
-@@ -1796,13 +1819,25 @@ tagmon(const Arg *arg) {
+@@ -1808,13 +1831,25 @@ tagmon(const Arg *arg) {
  
  int
  textnw(const char *text, unsigned int len) {
  }
  
  void
-@@ -1894,7 +1929,7 @@ unfocus(Client *c, Bool setfocus) {
+@@ -1906,7 +1941,7 @@ unfocus(Client *c, Bool setfocus) {
  	if(!c)
  		return;
  	grabbuttons(c, False);
 -	XSetWindowBorder(dpy, c->win, dc.norm[ColBorder]);
 +	XSetWindowBorder(dpy, c->win, dc.colors[0][ColBorder]);
- 	if(setfocus)
+ 	if(setfocus) {
  		XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
- }
-@@ -2150,8 +2185,11 @@ updatewmhints(Client *c) {
+ 		XDeleteProperty(dpy, root, netatom[NetActiveWindow]);
+@@ -2178,8 +2213,11 @@ updatewmhints(Client *c) {
  			wmh->flags &= ~XUrgencyHint;
  			XSetWMHints(dpy, c->win, wmh);
  		}

18-dwm-6.0-save_floats.diff

---- a/dwm.c	2012-03-17 20:51:15.653463313 +0200
-+++ b/dwm.c	2012-03-17 20:51:15.655463313 +0200
+--- a/dwm.c	2012-03-28 22:57:19.296221859 +0300
++++ b/dwm.c	2012-03-28 22:57:19.299221859 +0300
 @@ -89,6 +89,7 @@ struct Client {
  	float mina, maxa;
  	int x, y, w, h;
  	int basew, baseh, incw, inch, maxw, maxh, minw, minh;
  	int bw, oldbw;
  	unsigned int tags;
-@@ -277,6 +278,7 @@ static void togglescratch(const Arg *arg
+@@ -278,6 +279,7 @@ static void togglescratch(const Arg *arg
  static void togglemax(const Arg *arg);
  static void settagsatom(Window w, unsigned int tags);
  static void focusurgent(const Arg *arg);
  
  /* variables */
  static const char broken[] = "broken";
-@@ -1261,6 +1263,7 @@ manage(Window w, XWindowAttributes *wa)
+@@ -1265,6 +1267,7 @@ manage(Window w, XWindowAttributes *wa)
  	updatewindowtype(c);
  	updatesizehints(c);
  	updatewmhints(c);
  	XSelectInput(dpy, w, EnterWindowMask|FocusChangeMask|PropertyChangeMask|StructureNotifyMask);
  	grabbuttons(c, False);
  	if(!c->isfloating)
-@@ -1674,10 +1677,18 @@ setfullscreen(Client *c, Bool fullscreen
+@@ -1684,10 +1687,18 @@ setfullscreen(Client *c, Bool fullscreen
  
  void
  setlayout(const Arg *arg) {
  	strncpy(selmon->ltsymbol, selmon->lt[selmon->sellt]->symbol, sizeof selmon->ltsymbol);
  	if(selmon->sel)
  		arrange(selmon);
-@@ -1880,10 +1891,12 @@ togglefloating(const Arg *arg) {
+@@ -1892,10 +1903,12 @@ togglefloating(const Arg *arg) {
  		return;
  	selmon->sel->isfloating = !selmon->sel->isfloating || selmon->sel->isfixed;
  	if(selmon->sel->isfloating)
  	arrange(selmon);
  }
  
-@@ -2589,6 +2602,14 @@ focusurgent(const Arg *arg) {
+@@ -2617,6 +2630,14 @@ focusurgent(const Arg *arg) {
  	}
  }
  

19-dwm-6.0-fix_keypress_deprecated.diff

+--- a/dwm.c	2012-03-28 22:57:19.306221857 +0300
++++ b/dwm.c	2012-03-28 22:57:19.309221859 +0300
+@@ -36,6 +36,7 @@
+ #include <X11/Xlib.h>
+ #include <X11/Xproto.h>
+ #include <X11/Xutil.h>
++#include <X11/XKBlib.h>
+ #ifdef XINERAMA
+ #include <X11/extensions/Xinerama.h>
+ #endif /* XINERAMA */
+@@ -1178,7 +1179,7 @@ keypress(XEvent *e) {
+ 	XKeyEvent *ev;
+ 
+ 	ev = &e->xkey;
+-	keysym = XKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0);
++	keysym = XkbKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0, 0);
+ 	for(i = 0; i < LENGTH(keys); i++)
+ 		if(keysym == keys[i].keysym
+ 		&& CLEANMASK(keys[i].mod) == CLEANMASK(ev->state)

19-dwm-6.0-netactivewindow.diff

---- a/dwm.c	2012-03-17 20:51:15.663463314 +0200
-+++ b/dwm.c	2012-03-17 20:51:15.666463314 +0200
-@@ -61,7 +61,7 @@ enum { CurNormal, CurResize, CurMove, Cu
- enum { ColBorder, ColFG, ColBG, ColLast };              /* color */
- enum { NetSupported, NetWMName, NetWMState,
-        NetWMFullscreen, NetActiveWindow, NetWMWindowType,
--       NetWMWindowTypeDialog, NetLast };     /* EWMH atoms */
-+       NetWMWindowTypeDialog, NetClientList, NetLast };     /* EWMH atoms */
- enum { WMProtocols, WMDelete, WMState, WMTakeFocus, WMLast }; /* default atoms */
- enum { DWMTags, DWMLast };                              /* DWM atoms */
- enum { ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle,
-@@ -252,6 +252,7 @@ static void unmapnotify(XEvent *e);
- static Bool updategeom(void);
- static void updatebarpos(Monitor *m);
- static void updatebars(void);
-+static void updateclientlist(void);
- static void updatenumlockmask(void);
- static void updatesizehints(Client *c);
- static void updatestatus(void);
-@@ -531,6 +532,7 @@ cleanup(void) {
- 		cleanupmon(mons);
- 	XSync(dpy, False);
- 	XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime);
-+	XDeleteProperty(dpy, root, netatom[NetActiveWindow]);
- }
- 
- void
-@@ -948,8 +950,10 @@ focus(Client *c) {
- 		XSetWindowBorder(dpy, c->win, dc.colors[1][ColBorder]);
- 		setfocus(c);
- 	}
--	else
-+	else {
- 		XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
-+		XDeleteProperty(dpy, root, netatom[NetActiveWindow]);
-+	}
- 	selmon->sel = c;
- 	drawbars();
- }
-@@ -1272,6 +1276,8 @@ manage(Window w, XWindowAttributes *wa)
- 		XRaiseWindow(dpy, c->win);
- 	attach(c);
- 	attachstack(c);
-+	XChangeProperty(dpy, root, netatom[NetClientList], XA_WINDOW, 32, PropModeAppend,
-+	                (unsigned char *) &(c->win), 1);
- 	XMoveResizeWindow(dpy, c->win, c->x + 2 * sw, c->y, c->w, c->h); /* some windows require this */
- 	setclientstate(c, NormalState);
- 	if (c->mon == selmon)
-@@ -1642,8 +1648,12 @@ sendevent(Client *c, Atom proto) {
- 
- void
- setfocus(Client *c) {
--	if(!c->neverfocus)
-+	if(!c->neverfocus) {
- 		XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime);
-+		XChangeProperty(dpy, root, netatom[NetActiveWindow],
-+ 		                XA_WINDOW, 32, PropModeReplace,
-+ 		                (unsigned char *) &(c->win), 1);
-+	}
- 	sendevent(c, wmatom[WMTakeFocus]);
- }
- 
-@@ -1737,6 +1747,7 @@ setup(void) {
- 	netatom[NetWMFullscreen] = XInternAtom(dpy, "_NET_WM_STATE_FULLSCREEN", False);
- 	netatom[NetWMWindowType] = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE", False);
- 	netatom[NetWMWindowTypeDialog] = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_DIALOG", False);
-+	netatom[NetClientList] = XInternAtom(dpy, "_NET_CLIENT_LIST", False);
- 	dwmatom[DWMTags] = XInternAtom(dpy, "_DWM_TAGS", False);
- 	/* init cursors */
- 	cursor[CurNormal] = XCreateFontCursor(dpy, XC_left_ptr);
-@@ -1759,6 +1770,7 @@ setup(void) {
- 	/* EWMH support per view */
- 	XChangeProperty(dpy, root, netatom[NetSupported], XA_ATOM, 32,
- 			PropModeReplace, (unsigned char *) netatom, NetLast);
-+	XDeleteProperty(dpy, root, netatom[NetClientList]);
- 	/* select for events */
- 	wa.cursor = cursor[CurNormal];
- 	wa.event_mask = SubstructureRedirectMask|SubstructureNotifyMask|ButtonPressMask|PointerMotionMask
-@@ -1943,8 +1955,10 @@ unfocus(Client *c, Bool setfocus) {
- 		return;
- 	grabbuttons(c, False);
- 	XSetWindowBorder(dpy, c->win, dc.colors[0][ColBorder]);
--	if(setfocus)
-+	if(setfocus) {
- 		XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
-+		XDeleteProperty(dpy, root, netatom[NetActiveWindow]);
-+	}
- }
- 
- void
-@@ -1968,6 +1982,7 @@ unmanage(Client *c, Bool destroyed) {
- 	}
- 	free(c);
- 	focus(NULL);
-+	updateclientlist();
- 	arrange(m);
- }
- 
-@@ -2016,6 +2031,19 @@ updatebarpos(Monitor *m) {
- 		m->by = -bh;
- }
- 
-+void
-+updateclientlist() {
-+	Client *c;
-+	Monitor *m;
-+
-+	XDeleteProperty(dpy, root, netatom[NetClientList]);
-+	for(m = mons; m; m = m->next)
-+		for(c = m->clients; c; c = c->next)
-+			XChangeProperty(dpy, root, netatom[NetClientList],
-+ 			                XA_WINDOW, 32, PropModeAppend,
-+ 			                (unsigned char *) &(c->win), 1);
-+}
-+
- Bool
- updategeom(void) {
- 	Bool dirty = False;

20-dwm-6.0-statusmon.diff

---- a/dwm.c	2012-03-17 20:51:15.683463315 +0200
-+++ b/dwm.c	2012-03-17 20:51:15.686463315 +0200
-@@ -129,6 +129,7 @@ typedef struct {
- struct Monitor {
- 	char ltsymbol[16];
- 	int num;
-+	int status;
- 	int by;               /* bar geometry */
- 	int mx, my, mw, mh;   /* screen size */
- 	int wx, wy, ww, wh;   /* window area  */
-@@ -701,6 +702,7 @@ createmon(void) {
- 	if(!(m->lts = calloc(numtags, sizeof(Layout *))))
- 		die("fatal: could not malloc() %u bytes\n", sizeof(Layout *) * numtags);
- 	m->tagset[0] = m->tagset[1] = 1;
-+	m->status = 0;
- 	m->mfacts[0] = mfact;
- 	m->nmasters[0] = nmaster;
- 	m->lts[0] = &layouts[0];
-@@ -806,7 +808,7 @@ drawbar(Monitor *m) {
- 	drawtext(m->ltsymbol, dc.colors[0], False);
- 	dc.x += dc.w;
- 	x = dc.x;
--	if(m == selmon) { /* status is only drawn on selected monitor */
-+	if(m->status) { /* status is only drawn on `statusmon` */
- 		dc.w = textnw(stext, strlen(stext));
- 		dc.x = m->ww - dc.w;
- 		if(dc.x < x) {
-@@ -2084,6 +2086,7 @@ updategeom(void) {
- 					m->my = m->wy = unique[i].y_org;
- 					m->mw = m->ww = unique[i].width;
- 					m->mh = m->wh = unique[i].height;
-+					m->status = (i == statusmon ? 1 : 0);
- 					updatebarpos(m);
- 				}
- 		}
-@@ -2112,6 +2115,7 @@ updategeom(void) {
- 	{
- 		if(!mons)
- 			mons = createmon();
-+		mons->status = 1;
- 		if(mons->mw != sw || mons->mh != sh) {
- 			dirty = True;
- 			mons->mw = mons->ww = sw;
-@@ -2201,9 +2205,12 @@ updatetitle(Client *c) {
- 
- void
- updatestatus(void) {
-+	Monitor* m;
-+
- 	if(!gettextprop(root, XA_WM_NAME, stext, sizeof(stext)))
- 		strcpy(stext, "dwm-"VERSION);
--	drawbar(selmon);
-+	for(m = mons; m; m = m->next)
-+		drawbar(m);
- }
- 
- void

21-dwm-6.0-warp.diff

---- a/dwm.c	2012-03-17 20:51:15.694463316 +0200
-+++ b/dwm.c	2012-03-17 20:51:15.697463316 +0200
-@@ -281,6 +281,7 @@ static void togglemax(const Arg *arg);
- static void settagsatom(Window w, unsigned int tags);
- static void focusurgent(const Arg *arg);
- static void savefloat(Client *c);
-+static void warp(Monitor *m);
- 
- /* variables */
- static const char broken[] = "broken";
-@@ -978,6 +979,7 @@ focusmon(const Arg *arg) {
- 		return;
- 	unfocus(selmon->sel, True);
- 	selmon = m;
-+	warp(selmon);
- 	focus(NULL);
- }
- 
-@@ -2645,6 +2647,13 @@ savefloat(Client *c) {
- 	c->sfh = c->h;
- }
- 
-+void
-+warp(Monitor *m) {
-+	if(!m)
-+		return;
-+	XWarpPointer(dpy, None, root, 0, 0, 0, 0, m->wx + m->ww / 2, m->wy + m->wh / 2);
-+}
-+
- int
- main(int argc, char *argv[]) {
- 	if(argc == 2 && !strcmp("-v", argv[1]))

22-dwm-6.0-tagmon.diff

---- a/dwm.c	2012-03-17 20:51:15.704463317 +0200
-+++ b/dwm.c	2012-03-17 20:51:15.708463317 +0200
-@@ -229,7 +229,7 @@ static void restack(Monitor *m);
- static void run(void);
- static void scan(void);
- static Bool sendevent(Client *c, Atom proto);
--static void sendmon(Client *c, Monitor *m);
-+static void sendmon(Client *c, Monitor *m, Bool readrules);
- static void setclientstate(Client *c, long state);
- static void setfocus(Client *c);
- static void setfullscreen(Client *c, Bool fullscreen);
-@@ -1392,7 +1392,7 @@ movemouse(const Arg *arg) {
- 	} while(ev.type != ButtonRelease);
- 	XUngrabPointer(dpy, CurrentTime);
- 	if((m = recttomon(c->x, c->y, c->w, c->h)) != selmon) {
--		sendmon(c, m);
-+		sendmon(c, m, False);
- 		selmon = m;
- 		focus(NULL);
- 	}
-@@ -1537,7 +1537,7 @@ resizemouse(const Arg *arg) {
- 	XUngrabPointer(dpy, CurrentTime);
- 	while(XCheckMaskEvent(dpy, EnterWindowMask, &ev));
- 	if((m = recttomon(c->x, c->y, c->w, c->h)) != selmon) {
--		sendmon(c, m);
-+		sendmon(c, m, False);
- 		selmon = m;
- 		focus(NULL);
- 	}
-@@ -1604,14 +1604,39 @@ scan(void) {
- }
- 
- void
--sendmon(Client *c, Monitor *m) {
-+sendmon(Client *c, Monitor *m, Bool readrules) {
-+	const char *class, *instance;
-+	unsigned int i;
-+	const Rule *r;
-+	XClassHint ch = { 0 };
-+
- 	if(c->mon == m)
- 		return;
- 	unfocus(c, True);
- 	detach(c);
- 	detachstack(c);
- 	c->mon = m;
--	c->tags = m->tagset[m->seltags]; /* assign tags of target monitor */
-+	if (!readrules) {
-+		c->tags = m->tagset[m->seltags];
-+	} else {
-+		c->tags = 0;
-+		if(XGetClassHint(dpy, c->win, &ch)) {
-+			class    = ch.res_class ? ch.res_class : broken;
-+			instance = ch.res_name  ? ch.res_name  : broken;
-+			for(i = 0; i < LENGTH(rules); i++) {
-+				r = &rules[i];
-+				if((!r->title || strstr(c->name, r->title))
-+				&& (!r->class || strstr(class, r->class))
-+				&& (!r->instance || strstr(instance, r->instance)))
-+					c->tags |= r->tags;
-+			}
-+			if(ch.res_class)
-+				XFree(ch.res_class);
-+			if(ch.res_name)
-+				XFree(ch.res_name);
-+		}
-+		c->tags = c->tags & TAGMASK ? c->tags & TAGMASK : m->tagset[m->seltags];  
-+	}
- 	attach(c);
- 	attachstack(c);
- 	focus(NULL);
-@@ -1839,9 +1864,16 @@ tag(const Arg *arg) {
- 
- void
- tagmon(const Arg *arg) {
-+	Monitor *m;
- 	if(!selmon->sel || !mons->next)
- 		return;
--	sendmon(selmon->sel, dirtomon(arg->i));
-+	m = dirtomon(arg->i);
-+	if(selmon->sel->isfloating) {
-+		selmon->sel->x += m->mx - selmon->mx;
-+		selmon->sel->y += m->my - selmon->my;
-+	}
-+	sendmon(selmon->sel, m, True);
-+	focusmon(arg);
- }
- 
- int

23-dwm-6.0-multitags.diff

---- a/dwm.c	2012-03-17 20:51:15.715463317 +0200
-+++ b/dwm.c	2012-03-17 20:51:15.718463317 +0200
-@@ -52,7 +52,7 @@
- #define MOUSEMASK               (BUTTONMASK|PointerMotionMask)
- #define WIDTH(X)                ((X)->w + 2 * (X)->bw)
- #define HEIGHT(X)               ((X)->h + 2 * (X)->bw)
--#define TAGMASK                 ((1 << LENGTH(tags)) - 1)
-+#define TAGMASK                 ((1 << LENGTH(tags[0])) - 1)
- #define TEXTW(X)                (textnw(X, strlen(X)) + dc.font.height)
- #define MAXCOLORS               8
- 
-@@ -184,7 +184,7 @@ static void clientmessage(XEvent *e);
- static void configure(Client *c);
- static void configurenotify(XEvent *e);
- static void configurerequest(XEvent *e);
--static Monitor *createmon(void);
-+static Monitor *createmon(int monitor);
- static void destroynotify(XEvent *e);
- static void detach(Client *c);
- static void detachstack(Client *c);
-@@ -318,10 +318,10 @@ static Window root;
- /* configuration, allows nested code to access above variables */
- #include "config.h"
- 
--static unsigned int scratchtag = 1 << LENGTH(tags);
-+static unsigned int scratchtag = 1 << LENGTH(tags[0]);
- 
- /* compile-time check if all tags fit into an unsigned int bit array. */
--struct NumTags { char limitexceeded[LENGTH(tags) > 31 ? -1 : 1]; };
-+struct NumTags { char limitexceeded[LENGTH(tags[0]) > 31 ? -1 : 1]; };
- 
- /* function implementations */
- void
-@@ -476,9 +476,9 @@ buttonpress(XEvent *e) {
- 	if(ev->window == selmon->barwin) {
- 		i = x = 0;
- 		do
--			x += TEXTW(tags[i].name);
--		while(ev->x >= x && ++i < LENGTH(tags));
--		if(i < LENGTH(tags)) {
-+			x += TEXTW(tags[selmon->num][i].name);
-+		while(ev->x >= x && ++i < LENGTH(tags[0]));
-+		if(i < LENGTH(tags[0])) {
- 			click = ClkTagBar;
- 			arg.ui = 1 << i;
- 		}
-@@ -690,9 +690,9 @@ configurerequest(XEvent *e) {
- }
- 
- Monitor *
--createmon(void) {
-+createmon(int monitor) {
- 	Monitor *m;
--	int i, numtags = LENGTH(tags) + 1;
-+	int i, numtags = LENGTH(tags[0]) + 1;
- 
- 	if(!(m = (Monitor *)calloc(1, sizeof(Monitor))))
- 		die("fatal: could not malloc() %u bytes\n", sizeof(Monitor));
-@@ -711,9 +711,9 @@ createmon(void) {
- 	m->topbar = topbar;
- 	m->curtag = m->prevtag = 1;
- 	for(i = 1; i < numtags; i++) {
--		m->mfacts[i] = tags[i - 1].mfact < 0 ? mfact : tags[i - 1].mfact;
--		m->nmasters[i] = tags[i - 1].nmaster < 0 ? nmaster : tags[i - 1].nmaster;
--		m->lts[i] = tags[i - 1].layout;
-+		m->mfacts[i] = tags[monitor][i - 1].mfact < 0 ? mfact : tags[monitor][i - 1].mfact;
-+		m->nmasters[i] = tags[monitor][i - 1].nmaster < 0 ? nmaster : tags[monitor][i - 1].nmaster;
-+		m->lts[i] = tags[monitor][i - 1].layout;
- 	}
- 	m->lt[0] = m->lts[m->curtag];
- 	m->lt[1] = &layouts[1 % LENGTH(layouts)];
-@@ -790,10 +790,10 @@ drawbar(Monitor *m) {
- 			urg |= c->tags;
- 	}
- 	dc.x = 0;
--	for(i = 0; i < LENGTH(tags); i++) {
--		dc.w = TEXTW(tags[i].name);
-+	for(i = 0; i < LENGTH(tags[0]); i++) {
-+		dc.w = TEXTW(tags[m->num][i].name);
- 		col = dc.colors[ (urg & 1 << i) ? 2 : (m->tagset[m->seltags] & 1 << i) ? 1 : 0 ];
--		drawtext(tags[i].name, col, True);
-+		drawtext(tags[m->num][i].name, col, True);
- 		drawsquare(m == selmon && selmon->sel && selmon->sel->tags & 1 << i, occ & 1 << i, col);
- 		dc.x += dc.w;
- 	}
-@@ -2105,9 +2105,9 @@ updategeom(void) {
- 			for(i = 0; i < (nn - n); i++) { /* new monitors available */
- 				for(m = mons; m && m->next; m = m->next);
- 				if(m)
--					m->next = createmon();
-+					m->next = createmon(i);
- 				else
--					mons = createmon();
-+					mons = createmon(i);
- 			}
- 			for(i = 0, m = mons; i < nn && m; m = m->next, i++)
- 				if(i >= n
-@@ -2148,7 +2148,7 @@ updategeom(void) {
- 	/* default monitor setup */
- 	{
- 		if(!mons)
--			mons = createmon();
-+			mons = createmon(0);
- 		mons->status = 1;
- 		if(mons->mw != sw || mons->mh != sh) {
- 			dirty = True;
-@@ -2469,10 +2469,10 @@ int
- shifttag(int dist) {
- 	int i, curtags;
- 	int seltag = 0;
--	int numtags = LENGTH(tags);
-+	int numtags = LENGTH(tags[0]);
- 
- 	curtags = selmon->tagset[selmon->seltags];
--	for(i = 0; i < LENGTH(tags); i++) {
-+	for(i = 0; i < LENGTH(tags[0]); i++) {
- 		if((curtags & (1 << i)) != 0) {
- 			seltag = i;
- 			break;

24-dwm-6.0-fix_keypress_deprecated.diff

---- a/dwm.c	2012-03-17 20:51:15.726463318 +0200
-+++ b/dwm.c	2012-03-17 20:51:15.729463318 +0200
-@@ -36,6 +36,7 @@
- #include <X11/Xlib.h>
- #include <X11/Xproto.h>
- #include <X11/Xutil.h>
-+#include <X11/XKBlib.h>
- #ifdef XINERAMA
- #include <X11/extensions/Xinerama.h>
- #endif /* XINERAMA */
-@@ -1182,7 +1183,7 @@ keypress(XEvent *e) {
- 	XKeyEvent *ev;
- 
- 	ev = &e->xkey;
--	keysym = XKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0);
-+	keysym = XkbKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0, 0);
- 	for(i = 0; i < LENGTH(keys); i++)
- 		if(keysym == keys[i].keysym
- 		&& CLEANMASK(keys[i].mod) == CLEANMASK(ev->state)
         "16-${pkgname}-${pkgver}-focusurgent.diff"
         "17-${pkgname}-${pkgver}-statuscolors.diff"
         "18-${pkgname}-${pkgver}-save_floats.diff"
-        "19-${pkgname}-${pkgver}-netactivewindow.diff"
-        "20-${pkgname}-${pkgver}-statusmon.diff"
-        "21-${pkgname}-${pkgver}-warp.diff"
-        "22-${pkgname}-${pkgver}-tagmon.diff"
-        "23-${pkgname}-${pkgver}-multitags.diff"
-        "24-${pkgname}-${pkgver}-fix_keypress_deprecated.diff")
-sha256sums=('e821bd4e6f33071586449691367ffc88b50e9b9c0ca785e9637d98852b36485a'
-            'b80ff9877611f2f3bf8d548a3ef0887c71c8b4eadaed682169dcc230d8151464'
-            '0e55155f74c4a13d279dfb097c121c9ed20562542dc5a34ab02b59bd7d541710'
-            '03652b2143846504c42ac1cf82e52b09c2ac0957b1ee3c4f30f84584ffe56cf1'
-            'e45a2438d38c30ff4c1d18105dccd7b31c0991657a8458d0240e25e9e85b881a'
-            '7fb25e6d5bb7cd4e6952f89bc3bd6c1bf34fe98e331835a894fe3a9dba6deb4f'
-            '66cc17dfb2e32711d9e8898080a414dea784b0c773dcb761412b1645970a29ab'
-            'eb87250144271a6a1c5fecd5eba374bd73537d7ba41ffda60b3844a423c8ac74'
-            '40fb2d84c9589bb54e3eb05868b8f2decd113ce3876a4f9b8b4daa6c7487e977'
-            '52c39d38e69799fbfed90d271ca93d48c30a5de39f094c58574ffb32bb72d9e7'
-            '4966e6a34da4e2fee0f4ca11795a0d27deb1ea561455d9bb642cbde1023b02d8'
-            '9cce4b57e66a3ba69246a7641f07f9c5cae1bcabb8fb0600c3d50feb983adeed'
-            '5f3827554039ca4480ddf2c8596ce3f5aacd2311fb08daad3e704a792c6d9fa2'
-            '25bb70c1ea66c9d1136db1c621a845d32e6c15179a3c1b83dcf43718d561057f'
-            'b936724918f30bc2949596a07331434eb8c78dc447103df7dce53def89d429bd'
-            '83b26c75fc81879a042ea62b7adecd32dcff294e9ef27450f882f3895a0677d6'
-            '3dae466126d74537c63e4dc940be7c0b43563a30221c331776b03c963dad8814'
-            'cbc403b985809254c4d3cf57eccc71fe3c8ef0112d09e149377e0588e9f8fc21'
-            'a181a5bc6663cec36f03420f25dce8145993ed88f78b93942b4ba58908d79ff1'
-            'fdd48d3d2f9c23a6f9ad8304fadf7bd142fdc4fcedf53a4acbb9482821142e73'
-            'bee884420b28771fcf42b2012d7123fa922d7c1af6d1a1374ad1977ed7c28bcd'
-            'e1f5a4795d212ac602875cb92f02d555b8a13beb6407cacb146dded9315bcd7d'
-            '08e1712a181b6dd1b50361ea20daab17650b348e3657ba597e17da3851b7ec0e'
-            '0d1885e7e6b0a7b866ad711f68fe5852055b0c3708e14a003759f4ed62e05692'
-            '58d5217521ead365f60f11d93cb83f1dce4e9afd66be87cb4ab6ee6e2a038985'
-            'b62fa582f63a2b81cd037780da0a84ae185a009df0c1131de42fef4dcc1595a0')
+        "19-${pkgname}-${pkgver}-fix_keypress_deprecated.diff")
+sha256sums=('f22f7c634878d0032893f33b23a8d40df8adaf3f11895dd682076301be03e787'
+            '16d6de14278ce26ef648b91bb0cae485673561adc9383eef6887735f0d8e70dc'
+            '5722da6304b025dd09576d924be580deb4dd8301ffe77ffebf80ca4800fdc19c'
+            '5627503f0857b64376f510f5a1fe3ef29174c0a0a55b2ed29df7374dad533c00'
+            '7740f180633adf7b72c2416c08098e9bff83efa96cea3e25a5a18662201ea7c1'
+            '6b82e2065b9f1704baf34a916d1c72e0f8509c7d34912b052786a728859bf593'
+            '257d27e86ee2cd5cc9dee30a0ea202dcff348d2cd10a6b5d9c75402b372352de'
+            '4090e6c6eeea8c06304dfc384aca268daf3f1bbe5cdf215285816ff2a900a01f'
+            '58e33bd68d1e8d20ce088651ef4192fe966b6becf760380b189ec423a109a7e6'
+            'a40ff910fb1fdc955cddc2a278b21cedb09a310f71398cb40fe523a28dee07b2'
+            '4703bdcad45177d850e610e52cd79567290ab2efaf892b50d74664cae0339780'
+            '57c294297e409cd60bfa999c3b19389274a7c8ac8baec4cab09d228f764f2a28'
+            '8829cfe345333051c844f07ce824716c3a9e742b87f1423dc6f3b474f7c38be0'
+            '28118915c488e08ad7f758c6f1e862de6303281780deffc1539571580fa64483'
+            '796ffe461f146b61ec79d1c459565f0f04bed17a823b1b866ad4dc1fb2fe111e'
+            'e7c95c1e4c65779ca7ec9d0407866788ac89151bd9b9a6df9770f56e68af89d5'
+            '8b4d3e898005405fc8842ecdb282f12889afcb5fe82b21924e4fed1afdb598ae'
+            '1ee973a65919bde790054ca3df7ef03d0195e0d7d396e808c991315d742a0526'
+            'd450f6a5fdd49ee0d74ecc306cd5ab7606be3b09ebb35c3f8b69053ab941cdf3'
+            '4cc15e88ab8984cb0988ffde686c71be3e80a83fd12d8f8358e13226c93f7e52'
+            '75dd64e5916a76822a2829be99d375c2f6b38be8cd3aa65c3d0adc9122052643')
 
 build() {
   cd "${srcdir}" && cd "`find . -type d -name dwm-\*`"
 static const Bool topbar            = True;     /* False means bottom bar */
 static const Bool clicktofocus      = True;     /* Change focus only on click */
 static const Bool viewontag         = True;     /* Switch view on tag switch */
-static const unsigned int statusmon = 0;        /* On which monitor should the status appear */
 
 static const Rule rules[] = {
 	/* class          instance     title       tags mask     isfloating   iscentred   monitor */
 	{ "Vlc",          NULL,        NULL,       0,            True,        True,       -1 },
 	{ "XFontSel",     NULL,        NULL,       0,            True,        True,       -1 },
 	{ "Kcalc",        NULL,        NULL,       0,            True,        True,       -1 },
-	{ "Chromium",     NULL,        NULL,       1 << 2,       False,       False,       0 },
-	{ "Firefox",      NULL,        NULL,       1 << 2,       True,        True,        0 },
-	{ "Firefox",      "Navigator", NULL,       1 << 2,       False,       False,       0 },
-	{ "Ktorrent",     NULL,        NULL,       1 << 4,       False,       False,       0 },
-	{ "VirtualBox",   NULL,        NULL,       1 << 5,       False,       False,       0 },
-	{ "VBoxSDL",      NULL,        NULL,       1 << 5,       False,       False,       0 },
-	{ "Xephyr",       NULL,        NULL,       0,            False,       False,       1 },
-	{ "Opera",        NULL,        NULL,       1 << 2,       False,       False,       1 },
-	{ "Komodo Edit",  NULL,        NULL,       1 << 2,       True,        True,        1 },
-	{ "Komodo Edit",  "Komodo",    NULL,       1 << 2,       False,       False,       1 },
-	{ "Komodo Edit",  NULL,        "Find",     1 << 2,       True,        True,        1 },
-	{ "Pidgin",       NULL,        NULL,       1 << 3,       False,       False,       1 },
-	{ "Pidgin",       NULL,        "Pidgin",   1 << 3,       True,        True,        1 },
-	{ "Gyachi",       NULL,        NULL,       1 << 3,       False,       False,       1 },
+	{ "Chromium",     NULL,        NULL,       1 << 2,       False,       False,      -1 },
+	{ "Firefox",      NULL,        NULL,       1 << 2,       True,        True,       -1 },
+	{ "Firefox",      "Navigator", NULL,       1 << 2,       False,       False,      -1 },
+	{ "Ktorrent",     NULL,        NULL,       1 << 4,       False,       False,      -1 },
+	{ "VirtualBox",   NULL,        NULL,       1 << 5,       False,       False,      -1 },
+	{ "VBoxSDL",      NULL,        NULL,       1 << 5,       False,       False,      -1 },
+	{ "Xephyr",       NULL,        NULL,       0,            False,       False,      -1 },
+	{ "Opera",        NULL,        NULL,       1 << 2,       False,       False,      -1 },
+	{ "Komodo Edit",  NULL,        NULL,       1 << 2,       True,        True,       -1 },
+	{ "Komodo Edit",  "Komodo",    NULL,       1 << 2,       False,       False,      -1 },
+	{ "Komodo Edit",  NULL,        "Find",     1 << 2,       True,        True,       -1 },
+	{ "Pidgin",       NULL,        NULL,       1 << 3,       False,       False,      -1 },
+	{ "Pidgin",       NULL,        "Pidgin",   1 << 3,       True,        True,       -1 },
+	{ "Gyachi",       NULL,        NULL,       1 << 3,       False,       False,      -1 },
 };
 
 /* layout(s) */
 };
 
 /* tagging */
-static const Tag tags[2][6] = {
+static const Tag tags[] = {
 	/* name       layout           mfact    nmaster */
-	{
 	{ "main",     &layouts[4],     -1,      -1 },
 	{ "term",     &layouts[4],     -1,      -1 },
 	{ "web",      &layouts[1],     -1,      -1 },
-	{ "irc",      &layouts[4],     -1,      -1 },
+	{ "im",       &layouts[5],     0.80,    -1 },
 	{ "dld",      &layouts[4],     -1,      -1 },
 	{ "misc",     &layouts[4],     -1,      -1 },
-	},{
-	{ "main",     &layouts[4],     -1,      -1 },
-	{ "term",     &layouts[4],     -1,      -1 },
-	{ "dev",      &layouts[1],     -1,      -1 },
-	{ "im",       &layouts[5],     0.80,    -1 },
-	{ "doc",      &layouts[4],     -1,      -1 },
-	{ "misc",     &layouts[4],     -1,      -1 },
-	}
 };
 
 /* key definitions */
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.