Compare commits
	
		
			6 Commits
		
	
	
		
			cb3f58ad06
			...
			bottomstac
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 0b7a80e9c9 | ||
|  | f09418bbb6 | ||
|  | ed3ab6b4fc | ||
|  | f087d20e6e | ||
|  | a8e9513783 | ||
|  | c82db690cc | 
| @@ -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 } }, | ||||
|   | ||||
| @@ -25,7 +25,7 @@ INCS = -I${X11INC} -I${FREETYPEINC} | ||||
| LIBS = -L${X11LIB} -lX11 ${XINERAMALIBS} ${FREETYPELIBS} | ||||
|  | ||||
| # flags | ||||
| CPPFLAGS = -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_POSIX_C_SOURCE=2 -DVERSION=\"${VERSION}\" ${XINERAMAFLAGS} | ||||
| CPPFLAGS = -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_POSIX_C_SOURCE=200809L -DVERSION=\"${VERSION}\" ${XINERAMAFLAGS} | ||||
| #CFLAGS   = -g -std=c99 -pedantic -Wall -O0 ${INCS} ${CPPFLAGS} | ||||
| CFLAGS   = -std=c99 -pedantic -Wall -Wno-deprecated-declarations -Os ${INCS} ${CPPFLAGS} | ||||
| LDFLAGS  = ${LIBS} | ||||
|   | ||||
							
								
								
									
										81
									
								
								dwm.c
									
									
									
									
									
								
							
							
						
						
									
										81
									
								
								dwm.c
									
									
									
									
									
								
							| @@ -169,6 +169,7 @@ static void focus(Client *c); | ||||
| static void focusin(XEvent *e); | ||||
| static void focusmon(const Arg *arg); | ||||
| static void focusstack(const Arg *arg); | ||||
| static Atom getatomprop(Client *c, Atom prop); | ||||
| static int getrootptr(int *x, int *y); | ||||
| static long getstate(Window w); | ||||
| static int gettextprop(Window w, Atom atom, char *text, unsigned int size); | ||||
| @@ -233,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"; | ||||
| @@ -695,7 +698,7 @@ dirtomon(int dir) | ||||
| void | ||||
| drawbar(Monitor *m) | ||||
| { | ||||
| 	int x, w, sw = 0; | ||||
| 	int x, w, tw = 0; | ||||
| 	int boxs = drw->fonts->h / 9; | ||||
| 	int boxw = drw->fonts->h / 6 + 2; | ||||
| 	unsigned int i, occ = 0, urg = 0; | ||||
| @@ -704,8 +707,8 @@ drawbar(Monitor *m) | ||||
| 	/* draw status first so it can be overdrawn by tags later */ | ||||
| 	if (m == selmon) { /* status is only drawn on selected monitor */ | ||||
| 		drw_setscheme(drw, scheme[SchemeNorm]); | ||||
| 		sw = TEXTW(stext) - lrpad + 2; /* 2px right padding */ | ||||
| 		drw_text(drw, m->ww - sw, 0, sw, bh, 0, stext, 0); | ||||
| 		tw = TEXTW(stext) - lrpad + 2; /* 2px right padding */ | ||||
| 		drw_text(drw, m->ww - tw, 0, tw, bh, 0, stext, 0); | ||||
| 	} | ||||
|  | ||||
| 	for (c = m->clients; c; c = c->next) { | ||||
| @@ -728,7 +731,7 @@ drawbar(Monitor *m) | ||||
| 	drw_setscheme(drw, scheme[SchemeNorm]); | ||||
| 	x = drw_text(drw, x, 0, w, bh, lrpad / 2, m->ltsymbol, 0); | ||||
|  | ||||
| 	if ((w = m->ww - sw - x) > bh) { | ||||
| 	if ((w = m->ww - tw - x) > bh) { | ||||
| 		if (m->sel) { | ||||
| 			drw_setscheme(drw, scheme[m == selmon ? SchemeSel : SchemeNorm]); | ||||
| 			drw_text(drw, x, 0, w, bh, lrpad / 2, m->sel->name, 0); | ||||
| @@ -1520,7 +1523,7 @@ setmfact(const Arg *arg) | ||||
| 	if (!arg || !selmon->lt[selmon->sellt]->arrange) | ||||
| 		return; | ||||
| 	f = arg->f < 1.0 ? arg->f + selmon->mfact : arg->f - 1.0; | ||||
| 	if (f < 0.1 || f > 0.9) | ||||
| 	if (f < 0.05 || f > 0.95) | ||||
| 		return; | ||||
| 	selmon->mfact = f; | ||||
| 	arrange(selmon); | ||||
| @@ -1688,11 +1691,13 @@ tile(Monitor *m) | ||||
| 		if (i < m->nmaster) { | ||||
| 			h = (m->wh - my) / (MIN(n, m->nmaster) - i); | ||||
| 			resize(c, m->wx, m->wy + my, mw - (2*c->bw), h - (2*c->bw), 0); | ||||
| 			my += HEIGHT(c); | ||||
| 			if (my + HEIGHT(c) < m->wh) | ||||
| 				my += HEIGHT(c); | ||||
| 		} else { | ||||
| 			h = (m->wh - ty) / (n - i); | ||||
| 			resize(c, m->wx + mw, m->wy + ty, m->ww - mw - (2*c->bw), h - (2*c->bw), 0); | ||||
| 			ty += HEIGHT(c); | ||||
| 			if (ty + HEIGHT(c) < m->wh) | ||||
| 				ty += HEIGHT(c); | ||||
| 		} | ||||
| } | ||||
|  | ||||
| @@ -2147,3 +2152,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