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