all repos — dwm @ 2e8e5509d9cad9229d2d79a1de75038d94032cfb

my dwm build

changed arrange functions to contain the Monitor as first argument
Anselm R Garbe garbeam@gmail.com
Thu, 21 Feb 2008 10:14:42 +0000
commit

2e8e5509d9cad9229d2d79a1de75038d94032cfb

parent

4426032450777e63ac9a8967cd67382497954c51

3 files changed, 49 insertions(+), 51 deletions(-)

jump to
M LICENSELICENSE

@@ -1,6 +1,6 @@

MIT/X Consortium License -© 2006-2007 Anselm R. Garbe <garbeam at gmail dot com> +© 2006-2008 Anselm R. Garbe <garbeam at gmail dot com> © 2006-2007 Sander van Dijk <a dot h dot vandijk at gmail dot com> © 2006-2007 Jukka Salmi <jukka at salmi dot ch> © 2007 Premysl Hruby <dfenze at gmail dot com>
M config.def.hconfig.def.h

@@ -3,7 +3,7 @@

/* appearance */ #define BARPOS BarTop /* BarBot, BarOff */ #define BORDERPX 1 -#define FONT "-*-terminus-medium-*-*-*-*-*-*-*-*-*-*-*" +#define FONT "-*-terminus-medium-r-normal-*-14-*-*-*-*-*-*-*" #define NORMBORDERCOLOR "#cccccc" #define NORMBGCOLOR "#cccccc" #define NORMFGCOLOR "#000000"
M dwm.cdwm.c

@@ -99,9 +99,10 @@ void (*func)(const char *arg);

const char *arg; } Key; +typedef struct Monitor Monitor; typedef struct { const char *symbol; - void (*arrange)(void); + void (*arrange)(Monitor *); } Layout; typedef struct {

@@ -116,14 +117,16 @@ regex_t *propregex;

regex_t *tagregex; } Regs; -typedef struct { - Window barwin; +struct Monitor { + unsigned int id; int sx, sy, sw, sh, wax, way, wah, waw; + double mwfact; Bool *seltags; Bool *prevtags; Layout *layout; - double mwfact; -} Monitor; + Window barwin; +}; + /* function declarations */ void applyrules(Client *c);

@@ -148,7 +151,7 @@ void *emallocz(unsigned int size);

void enternotify(XEvent *e); void eprint(const char *errstr, ...); void expose(XEvent *e); -void floating(void); /* default floating layout */ +void floating(Monitor *m); /* default floating layout */ void focus(Client *c); void focusin(XEvent *e); void focusnext(const char *arg);

@@ -188,7 +191,7 @@ void spawn(const char *arg);

void tag(const char *arg); unsigned int textnw(const char *text, unsigned int len); unsigned int textw(const char *text); -void tile(void); +void tile(Monitor *m); void togglebar(const char *arg); void togglefloating(const char *arg); void toggletag(const char *arg);

@@ -304,7 +307,7 @@ unban(c);

else ban(c); - monitors[selmonitor].layout->arrange(); + monitors[selmonitor].layout->arrange(&monitors[selmonitor]); focus(NULL); restack(); }

@@ -719,12 +722,12 @@ }

} void -floating(void) { /* default floating layout */ +floating(Monitor *m) { /* default floating layout */ Client *c; domwfact = dozoom = False; for(c = clients; c; c = c->next) - if(isvisible(c, selmonitor)) + if(isvisible(c, m->id)) resize(c, c->x, c->y, c->w, c->h, True); }

@@ -1598,6 +1601,7 @@ }

for(i = 0; i < mcount; i++) { /* init geometry */ m = &monitors[i]; + m->id = i; if (mcount != 1 && isxinerama) { m->sx = info[i].x_org;

@@ -1714,56 +1718,50 @@ return textnw(text, strlen(text)) + dc.font.height;

} void -tile(void) { - unsigned int i, j, n, nx, ny, nw, nh, mw, th; +tile(Monitor *m) { + unsigned int i, n, nx, ny, nw, nh, mw, th; Client *c, *mc; domwfact = dozoom = True; nx = ny = nw = 0; /* gcc stupidity requires this */ - for (i = 0; i < mcount; i++) { - Monitor *m = &monitors[i]; - - for(n = 0, c = nexttiled(clients, i); c; c = nexttiled(c->next, i)) - n++; + for(n = 0, c = nexttiled(clients, m->id); c; c = nexttiled(c->next, m->id)) + n++; - /* window geoms */ - mw = (n == 1) ? m->waw : m->mwfact * m->waw; - th = (n > 1) ? m->wah / (n - 1) : 0; - if(n > 1 && th < bh) - th = m->wah; + /* window geoms */ + mw = (n == 1) ? m->waw : m->mwfact * m->waw; + th = (n > 1) ? m->wah / (n - 1) : 0; + if(n > 1 && th < bh) + th = m->wah; - for(j = 0, c = mc = nexttiled(clients, i); c; c = nexttiled(c->next, i)) { - if(j == 0) { /* master */ - nx = m->wax; + for(i = 0, c = mc = nexttiled(clients, m->id); c; c = nexttiled(c->next, m->id)) { + if(i == 0) { /* master */ + nx = m->wax; + ny = m->way; + nw = mw - 2 * c->border; + nh = m->wah - 2 * c->border; + } + else { /* tile window */ + if(i == 1) { ny = m->way; - nw = mw - 2 * c->border; - nh = m->wah - 2 * c->border; - } - else { /* tile window */ - if(j == 1) { - ny = m->way; - nx += mc->w + 2 * mc->border; - nw = m->waw - mw - 2 * c->border; - } - if(j + 1 == n) /* remainder */ - nh = (m->way + m->wah) - ny - 2 * c->border; - else - nh = th - 2 * c->border; + nx += mc->w + 2 * mc->border; + nw = m->waw - mw - 2 * c->border; } - fprintf(stderr, "tile(%d, %d, %d, %d)\n", nx, ny, nw, nh); - resize(c, nx, ny, nw, nh, RESIZEHINTS); - if((RESIZEHINTS) && ((c->h < bh) || (c->h > nh) || (c->w < bh) || (c->w > nw))) - /* client doesn't accept size constraints */ - resize(c, nx, ny, nw, nh, False); - if(n > 1 && th != m->wah) - ny = c->y + c->h + 2 * c->border; + if(i + 1 == n) /* remainder */ + nh = (m->way + m->wah) - ny - 2 * c->border; + else + nh = th - 2 * c->border; + } + resize(c, nx, ny, nw, nh, RESIZEHINTS); + if((RESIZEHINTS) && ((c->h < bh) || (c->h > nh) || (c->w < bh) || (c->w > nw))) + /* client doesn't accept size constraints */ + resize(c, nx, ny, nw, nh, False); + if(n > 1 && th != m->wah) + ny = c->y + c->h + 2 * c->border; - j++; - } + i++; } - fprintf(stderr, "done\n"); } void togglebar(const char *arg) {

@@ -2045,7 +2043,7 @@

int main(int argc, char *argv[]) { if(argc == 2 && !strcmp("-v", argv[1])) - eprint("dwm-"VERSION", © 2006-2007 Anselm R. Garbe, Sander van Dijk, " + eprint("dwm-"VERSION", © 2006-2008 Anselm R. Garbe, Sander van Dijk, " "Jukka Salmi, Premysl Hruby, Szabolcs Nagy, Christof Musik\n"); else if(argc != 1) eprint("usage: dwm [-v]\n");