diff -r d9c7c686d4dc client.c --- a/client.c Fri Jun 01 12:11:25 2007 +0200 +++ b/client.c Sun Jun 10 17:38:57 2007 +0200 @@ -400,3 +400,25 @@ unmanage(Client *c) { XUngrabServer(dpy); lt->arrange(); } + +void clientspertag(const char *arg) { + cpt = atoi(arg); + lt->arrange(); +} diff -r d9c7c686d4dc dwm.h --- a/dwm.h Fri Jun 01 12:11:25 2007 +0200 +++ b/dwm.h Sun Jun 10 17:00:08 2007 +0200 @@ -82,6 +82,7 @@ extern char stext[256]; /* status tex extern char stext[256]; /* status text */ extern int screen, sx, sy, sw, sh; /* screen geometry */ extern int wax, way, wah, waw; /* windowarea geometry */ +extern int cpt; /* clients per tag limit */ extern unsigned int bh, blw, bpos; /* bar height, bar layout label width, bar position */ extern unsigned int ntags, numlockmask; /* number of tags, numlock mask */ extern void (*handler[LASTEvent])(XEvent *); /* event handler */ @@ -147,3 +148,5 @@ void *emallocz(unsigned int size); /* al void *emallocz(unsigned int size); /* allocates zero-initialized memory, exits on error */ void eprint(const char *errstr, ...); /* prints errstr and exits with 1 */ void spawn(const char *arg); /* forks a new subprocess with arg's cmd */ +void clientspertag(const char *arg); /* limit number of clients per tag */ diff -r d9c7c686d4dc layout.c --- a/layout.c Fri Jun 01 12:11:25 2007 +0200 +++ b/layout.c Sun Jun 10 17:14:57 2007 +0200 @@ -34,6 +34,7 @@ tile(void) { for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next)) n++; + if (cpt&&n>cpt) n = cpt; /* window geoms */ mh = (n > nmaster) ? wah / nmaster : wah / (n > 0 ? n : 1); mw = (n > nmaster) ? (waw * masterw) / 1000 : waw; @@ -71,6 +72,7 @@ tile(void) { } resize(c, nx, ny, nw, nh, False); i++; + if (cpt && i>cpt) break; } else ban(c); diff -r d9c7c686d4dc main.c --- a/main.c Fri Jun 01 12:11:25 2007 +0200 +++ b/main.c Sun Jun 10 17:39:59 2007 +0200 @@ -15,7 +15,7 @@ /* extern */ char stext[256]; -int screen, sx, sy, sw, sh, wax, way, waw, wah; +int screen, sx, sy, sw, sh, wax, way, waw, wah, cpt; unsigned int bh, bpos, ntags, numlockmask; Atom wmatom[WMLast], netatom[NetLast]; Bool *seltag; @@ -180,6 +180,7 @@ setup(void) { initfont(FONT); /* geometry */ sx = sy = 0; + cpt = 0; sw = DisplayWidth(dpy, screen); sh = DisplayHeight(dpy, screen); initlayouts();