tapply nmaster patch - dwm - [fork] customized build of dwm, the dynamic window… | |
git clone git://src.adamsgaard.dk/dwm | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit b1a28ae1dab34a159e7cf17a82ecda0635e72f97 | |
parent f68a01cd767659190bf690e29986184348672647 | |
Author: Connor Lane Smith <[email protected]> | |
Date: Tue, 25 Oct 2011 20:40:46 +0100 | |
apply nmaster patch | |
Diffstat: | |
M config.def.h | 3 +++ | |
M dwm.c | 42 ++++++++++++++++-------------… | |
2 files changed, 24 insertions(+), 21 deletions(-) | |
--- | |
diff --git a/config.def.h b/config.def.h | |
t@@ -24,6 +24,7 @@ static const Rule rules[] = { | |
/* layout(s) */ | |
static const float mfact = 0.55; /* factor of master area size [0.05..0.9… | |
+static const int nmaster = 1; /* number of clients in master area */ | |
static const Bool resizehints = True; /* True means respect size hints in tile… | |
static const Layout layouts[] = { | |
t@@ -55,6 +56,8 @@ static Key keys[] = { | |
{ MODKEY, XK_b, togglebar, {0} }, | |
{ MODKEY, XK_j, focusstack, {.i = +1 } … | |
{ MODKEY, XK_k, focusstack, {.i = -1 } … | |
+ { MODKEY, XK_i, incnmaster, {.i = +1 } … | |
+ { MODKEY, XK_d, incnmaster, {.i = -1 } … | |
{ MODKEY, XK_h, setmfact, {.f = -0.05… | |
{ MODKEY, XK_l, setmfact, {.f = +0.05… | |
{ MODKEY, XK_Return, zoom, {0} }, | |
diff --git a/dwm.c b/dwm.c | |
t@@ -125,6 +125,7 @@ typedef struct { | |
struct Monitor { | |
char ltsymbol[16]; | |
float mfact; | |
+ int nmaster; | |
int num; | |
int by; /* bar geometry */ | |
int mx, my, mw, mh; /* screen size */ | |
t@@ -189,6 +190,7 @@ static long getstate(Window w); | |
static Bool gettextprop(Window w, Atom atom, char *text, unsigned int size); | |
static void grabbuttons(Client *c, Bool focused); | |
static void grabkeys(void); | |
+static void incnmaster(const Arg *arg); | |
static void initfont(const char *fontstr); | |
static void keypress(XEvent *e); | |
static void killclient(const Arg *arg); | |
t@@ -664,6 +666,7 @@ createmon(void) { | |
die("fatal: could not malloc() %u bytes\n", sizeof(Monitor)); | |
m->tagset[0] = m->tagset[1] = 1; | |
m->mfact = mfact; | |
+ m->nmaster = nmaster; | |
m->showbar = showbar; | |
m->topbar = topbar; | |
m->lt[0] = &layouts[0]; | |
t@@ -1024,6 +1027,12 @@ grabkeys(void) { | |
} | |
void | |
+incnmaster(const Arg *arg) { | |
+ selmon->nmaster = MAX(selmon->nmaster + arg->i, 1); | |
+ arrange(selmon); | |
+} | |
+ | |
+void | |
initfont(const char *fontstr) { | |
char *def, **missing; | |
int n; | |
t@@ -1650,32 +1659,23 @@ textnw(const char *text, unsigned int len) { | |
void | |
tile(Monitor *m) { | |
- int x, y, h, w, mw; | |
- unsigned int i, n; | |
+ unsigned int i, n, mw, mh, tw, th; | |
Client *c; | |
for(n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++); | |
if(n == 0) | |
return; | |
- /* master */ | |
- c = nexttiled(m->clients); | |
- mw = m->mfact * m->ww; | |
- resize(c, m->wx, m->wy, (n == 1 ? m->ww : mw) - 2 * c->bw, m->wh - 2 *… | |
- if(--n == 0) | |
- return; | |
- /* tile stack */ | |
- x = (m->wx > c->x) ? c->x + mw + 2 * c->bw : m->wx + mw; | |
- y = m->wy; | |
- w = (m->wx > c->x) ? m->wx + m->ww - x : m->ww - mw; | |
- h = m->wh / n; | |
- if(h < bh) | |
- h = m->wh; | |
- for(i = 0, c = nexttiled(c->next); c; c = nexttiled(c->next), i++) { | |
- resize(c, x, y, w - 2 * c->bw, /* remainder */ ((i + 1 == n) | |
- ? m->wy + m->wh - y - 2 * c->bw : h - 2 * c->bw), False… | |
- if(h != m->wh) | |
- y = c->y + HEIGHT(c); | |
- } | |
+ | |
+ mh = (n > m->nmaster) ? m->wh / m->nmaster : m->wh / n; | |
+ mw = (n > m->nmaster) ? m->ww * m->mfact : m->ww; | |
+ th = (n > m->nmaster) ? m->wh / (n - m->nmaster) : 0; | |
+ tw = m->ww - mw; | |
+ | |
+ for(i = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++) | |
+ if(i < m->nmaster) | |
+ resize(c, m->wx, m->wy + (i*mh), mw - (2*c->bw), mh - … | |
+ else | |
+ resize(c, m->wx + mw, m->wy + ((i - m->nmaster)*th), t… | |
} | |
void |