tchanged arrange functions to contain the Monitor as first argument - dwm - [fo… | |
git clone git://src.adamsgaard.dk/dwm | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 2e8e5509d9cad9229d2d79a1de75038d94032cfb | |
parent 4426032450777e63ac9a8967cd67382497954c51 | |
Author: Anselm R Garbe <[email protected]> | |
Date: Thu, 21 Feb 2008 10:14:42 +0000 | |
changed arrange functions to contain the Monitor as first argument | |
Diffstat: | |
M LICENSE | 2 +- | |
M config.def.h | 2 +- | |
M dwm.c | 100 +++++++++++++++--------------… | |
3 files changed, 51 insertions(+), 53 deletions(-) | |
--- | |
diff --git a/LICENSE b/LICENSE | |
t@@ -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> | |
diff --git a/config.def.h b/config.def.h | |
t@@ -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" | |
diff --git a/dwm.c b/dwm.c | |
t@@ -99,9 +99,10 @@ typedef struct { | |
const char *arg; | |
} Key; | |
+typedef struct Monitor Monitor; | |
typedef struct { | |
const char *symbol; | |
- void (*arrange)(void); | |
+ void (*arrange)(Monitor *); | |
} Layout; | |
typedef struct { | |
t@@ -116,14 +117,16 @@ typedef struct { | |
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); | |
t@@ -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); | |
t@@ -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); | |
t@@ -304,7 +307,7 @@ arrange(void) { | |
else | |
ban(c); | |
- monitors[selmonitor].layout->arrange(); | |
+ monitors[selmonitor].layout->arrange(&monitors[selmonitor]); | |
focus(NULL); | |
restack(); | |
} | |
t@@ -719,12 +722,12 @@ expose(XEvent *e) { | |
} | |
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); | |
} | |
t@@ -1598,6 +1601,7 @@ setup(void) { | |
for(i = 0; i < mcount; i++) { | |
/* init geometry */ | |
m = &monitors[i]; | |
+ m->id = i; | |
if (mcount != 1 && isxinerama) { | |
m->sx = info[i].x_org; | |
t@@ -1714,56 +1718,50 @@ textw(const char *text) { | |
} | |
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… | |
- 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; | |
- | |
- for(j = 0, c = mc = nexttiled(clients, i); c; c = nexttiled(c-… | |
- if(j == 0) { /* master */ | |
- nx = m->wax; | |
+ for(n = 0, c = nexttiled(clients, m->id); c; c = nexttiled(c->next, m-… | |
+ 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; | |
+ | |
+ for(i = 0, c = mc = nexttiled(clients, m->id); c; c = nexttiled(c->nex… | |
+ 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->b… | |
- 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, … | |
- resize(c, nx, ny, nw, nh, RESIZEHINTS); | |
- if((RESIZEHINTS) && ((c->h < bh) || (c->h > nh) || (c-… | |
- /* 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++; | |
+ 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)… | |
+ /* 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; | |
+ | |
+ i++; | |
} | |
- fprintf(stderr, "done\n"); | |
} | |
void | |
togglebar(const char *arg) { | |
t@@ -2045,7 +2043,7 @@ selectmonitor(const char *arg) { | |
int | |
main(int argc, char *argv[]) { | |
if(argc == 2 && !strcmp("-v", argv[1])) | |
- eprint("dwm-"VERSION", © 2006-2007 Anselm R. Garbe, Sander va… | |
+ eprint("dwm-"VERSION", © 2006-2008 Anselm R. Garbe, Sander va… | |
"Jukka Salmi, Premysl Hruby, Szabolcs Nagy, Christof Mu… | |
else if(argc != 1) | |
eprint("usage: dwm [-v]\n"); |