mirror of
				https://github.com/tiyn/dwm.git
				synced 2025-10-31 03:01:17 +01:00 
			
		
		
		
	added bottomstack patch
This commit is contained in:
		| @@ -41,6 +41,8 @@ static const Layout layouts[] = { | ||||
| 	{ "[]=",      tile },    /* first entry is default */ | ||||
| 	{ "><>",      NULL },    /* no layout function means floating behavior */ | ||||
| 	{ "[M]",      monocle }, | ||||
| 	{ "TTT",      bstack }, | ||||
| 	{ "===",      bstackhoriz }, | ||||
| }; | ||||
|  | ||||
| /* key definitions */ | ||||
| @@ -76,6 +78,8 @@ static Key keys[] = { | ||||
| 	{ MODKEY,                       XK_t,      setlayout,      {.v = &layouts[0]} }, | ||||
| 	{ MODKEY,                       XK_f,      setlayout,      {.v = &layouts[1]} }, | ||||
| 	{ MODKEY,                       XK_m,      setlayout,      {.v = &layouts[2]} }, | ||||
| 	{ MODKEY,                       XK_u,      setlayout,      {.v = &layouts[3]} }, | ||||
| 	{ MODKEY,                       XK_o,      setlayout,      {.v = &layouts[4]} }, | ||||
| 	{ MODKEY,                       XK_space,  setlayout,      {0} }, | ||||
| 	{ MODKEY|ShiftMask,             XK_space,  togglefloating, {0} }, | ||||
| 	{ MODKEY,                       XK_0,      view,           {.ui = ~0 } }, | ||||
|   | ||||
							
								
								
									
										101
									
								
								dwm-bottomstack-20160719-56a31dc.diff
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								dwm-bottomstack-20160719-56a31dc.diff
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,101 @@ | ||||
| diff --git a/config.def.h b/config.def.h | ||||
| index fd77a07..c3a044b 100644 | ||||
| --- a/config.def.h | ||||
| +++ b/config.def.h | ||||
| @@ -41,6 +41,8 @@ static const Layout layouts[] = { | ||||
|  	{ "[]=",      tile },    /* first entry is default */ | ||||
|  	{ "><>",      NULL },    /* no layout function means floating behavior */ | ||||
|  	{ "[M]",      monocle }, | ||||
| +	{ "TTT",      bstack }, | ||||
| +	{ "===",      bstackhoriz }, | ||||
|  }; | ||||
|   | ||||
|  /* key definitions */ | ||||
| @@ -76,6 +78,8 @@ static Key keys[] = { | ||||
|  	{ MODKEY,                       XK_t,      setlayout,      {.v = &layouts[0]} }, | ||||
|  	{ MODKEY,                       XK_f,      setlayout,      {.v = &layouts[1]} }, | ||||
|  	{ MODKEY,                       XK_m,      setlayout,      {.v = &layouts[2]} }, | ||||
| +	{ MODKEY,                       XK_u,      setlayout,      {.v = &layouts[3]} }, | ||||
| +	{ MODKEY,                       XK_o,      setlayout,      {.v = &layouts[4]} }, | ||||
|  	{ MODKEY,                       XK_space,  setlayout,      {0} }, | ||||
|  	{ MODKEY|ShiftMask,             XK_space,  togglefloating, {0} }, | ||||
|  	{ MODKEY,                       XK_0,      view,           {.ui = ~0 } }, | ||||
| diff --git a/dwm.c b/dwm.c | ||||
| index b2bc9bd..8b74165 100644 | ||||
| --- a/dwm.c | ||||
| +++ b/dwm.c | ||||
| @@ -234,6 +234,8 @@ static int xerror(Display *dpy, XErrorEvent *ee); | ||||
|  static int xerrordummy(Display *dpy, XErrorEvent *ee); | ||||
|  static int xerrorstart(Display *dpy, XErrorEvent *ee); | ||||
|  static void zoom(const Arg *arg); | ||||
| +static void bstack(Monitor *m); | ||||
| +static void bstackhoriz(Monitor *m); | ||||
|   | ||||
|  /* variables */ | ||||
|  static const char broken[] = "broken"; | ||||
| @@ -2138,3 +2140,65 @@ main(int argc, char *argv[]) | ||||
|  	XCloseDisplay(dpy); | ||||
|  	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); | ||||
| +		} | ||||
| +	} | ||||
| +} | ||||
							
								
								
									
										64
									
								
								dwm.c
									
									
									
									
									
								
							
							
						
						
									
										64
									
								
								dwm.c
									
									
									
									
									
								
							| @@ -233,6 +233,8 @@ static int xerror(Display *dpy, XErrorEvent *ee); | ||||
| static int xerrordummy(Display *dpy, XErrorEvent *ee); | ||||
| static int xerrorstart(Display *dpy, XErrorEvent *ee); | ||||
| static void zoom(const Arg *arg); | ||||
| static void bstack(Monitor *m); | ||||
| static void bstackhoriz(Monitor *m); | ||||
|  | ||||
| /* variables */ | ||||
| static const char broken[] = "broken"; | ||||
| @@ -2147,3 +2149,65 @@ main(int argc, char *argv[]) | ||||
| 	XCloseDisplay(dpy); | ||||
| 	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); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user