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 */ | 	{ "[]=",      tile },    /* first entry is default */ | ||||||
| 	{ "><>",      NULL },    /* no layout function means floating behavior */ | 	{ "><>",      NULL },    /* no layout function means floating behavior */ | ||||||
| 	{ "[M]",      monocle }, | 	{ "[M]",      monocle }, | ||||||
|  | 	{ "TTT",      bstack }, | ||||||
|  | 	{ "===",      bstackhoriz }, | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /* key definitions */ | /* key definitions */ | ||||||
| @@ -76,6 +78,8 @@ static Key keys[] = { | |||||||
| 	{ MODKEY,                       XK_t,      setlayout,      {.v = &layouts[0]} }, | 	{ MODKEY,                       XK_t,      setlayout,      {.v = &layouts[0]} }, | ||||||
| 	{ MODKEY,                       XK_f,      setlayout,      {.v = &layouts[1]} }, | 	{ MODKEY,                       XK_f,      setlayout,      {.v = &layouts[1]} }, | ||||||
| 	{ MODKEY,                       XK_m,      setlayout,      {.v = &layouts[2]} }, | 	{ 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,                       XK_space,  setlayout,      {0} }, | ||||||
| 	{ MODKEY|ShiftMask,             XK_space,  togglefloating, {0} }, | 	{ MODKEY|ShiftMask,             XK_space,  togglefloating, {0} }, | ||||||
| 	{ MODKEY,                       XK_0,      view,           {.ui = ~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 xerrordummy(Display *dpy, XErrorEvent *ee); | ||||||
| static int xerrorstart(Display *dpy, XErrorEvent *ee); | static int xerrorstart(Display *dpy, XErrorEvent *ee); | ||||||
| static void zoom(const Arg *arg); | static void zoom(const Arg *arg); | ||||||
|  | static void bstack(Monitor *m); | ||||||
|  | static void bstackhoriz(Monitor *m); | ||||||
|  |  | ||||||
| /* variables */ | /* variables */ | ||||||
| static const char broken[] = "broken"; | static const char broken[] = "broken"; | ||||||
| @@ -2147,3 +2149,65 @@ main(int argc, char *argv[]) | |||||||
| 	XCloseDisplay(dpy); | 	XCloseDisplay(dpy); | ||||||
| 	return EXIT_SUCCESS; | 	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