diff options
| author | Joe <bousset.rudy@gmail.com> | 2022-08-25 16:07:12 +0200 | 
|---|---|---|
| committer | Joe <bousset.rudy@gmail.com> | 2022-08-25 16:07:12 +0200 | 
| commit | 300a8ee9fb7680e074b5a017110d685ad0356030 (patch) | |
| tree | 6ebf01d98b8b9a223b74260dca1a7f27a608e0a3 /dwm.c | |
| parent | readability update (diff) | |
| download | dwm-300a8ee9fb7680e074b5a017110d685ad0356030.tar.gz dwm-300a8ee9fb7680e074b5a017110d685ad0356030.tar.bz2 dwm-300a8ee9fb7680e074b5a017110d685ad0356030.tar.xz dwm-300a8ee9fb7680e074b5a017110d685ad0356030.tar.zst dwm-300a8ee9fb7680e074b5a017110d685ad0356030.zip | |
btmstck update
Diffstat (limited to 'dwm.c')
| -rw-r--r-- | dwm.c | 64 | 
1 files changed, 64 insertions, 0 deletions
| @@ -251,6 +251,8 @@ static int xerrorstart(Display *dpy, XErrorEvent *ee);  static void zoom(const Arg *arg);  static void centeredmaster(Monitor *m);  static void centeredfloatingmaster(Monitor *m); +static void bstack(Monitor *m); +static void bstackhoriz(Monitor *m);  /* variables */  static const char broken[] = "broken"; @@ -2482,6 +2484,68 @@ main(int argc, char *argv[])  	return EXIT_SUCCESS;  } +static void +bstack(Monitor *m) { +	int w, h, mh, mx, tx, ty, tw; +	unsigned int i, n; +	Client *c; + +	for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++); +	if (n == 0) +		return; +	if (n > m->nmaster) { +		mh = m->nmaster ? m->mfact * m->wh : 0; +		tw = m->ww / (n - m->nmaster); +		ty = m->wy + mh; +	} else { +		mh = m->wh; +		tw = m->ww; +		ty = m->wy; +	} +	for (i = mx = 0, tx = m->wx, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++) { +		if (i < m->nmaster) { +			w = (m->ww - mx) / (MIN(n, m->nmaster) - i); +			resize(c, m->wx + mx, m->wy, w - (2 * c->bw), mh - (2 * c->bw), 0); +			mx += WIDTH(c); +		} else { +			h = m->wh - mh; +			resize(c, tx, ty, tw - (2 * c->bw), h - (2 * c->bw), 0); +			if (tw != m->ww) +				tx += WIDTH(c); +		} +	} +} + +static void +bstackhoriz(Monitor *m) { +	int w, mh, mx, tx, ty, th; +	unsigned int i, n; +	Client *c; + +	for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++); +	if (n == 0) +		return; +	if (n > m->nmaster) { +		mh = m->nmaster ? m->mfact * m->wh : 0; +		th = (m->wh - mh) / (n - m->nmaster); +		ty = m->wy + mh; +	} else { +		th = mh = m->wh; +		ty = m->wy; +	} +	for (i = mx = 0, tx = m->wx, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++) { +		if (i < m->nmaster) { +			w = (m->ww - mx) / (MIN(n, m->nmaster) - i); +			resize(c, m->wx + mx, m->wy, w - (2 * c->bw), mh - (2 * c->bw), 0); +			mx += WIDTH(c); +		} else { +			resize(c, tx, ty, m->ww - (2 * c->bw), th - (2 * c->bw), 0); +			if (th != m->wh) +				ty += HEIGHT(c); +		} +	} +} +  void  centeredmaster(Monitor *m)  { | 
