|
|
@ -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 */ |
|
|
@ -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); |
|
|
@ -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]; |
|
|
@ -1023,6 +1026,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; |
|
|
@ -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 * c->bw, False); |
|
|
|
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 - (2*c->bw), False); |
|
|
|
else |
|
|
|
resize(c, m->wx + mw, m->wy + ((i - m->nmaster)*th), tw - (2*c->bw), th - (2*c->bw), False); |
|
|
|
} |
|
|
|
|
|
|
|
void |
|
|
|