Merge branch 'master' into dwm-mma
This commit is contained in:
		
							
								
								
									
										2
									
								
								LICENSE
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								LICENSE
									
									
									
									
									
								
							| @@ -1,6 +1,6 @@ | ||||
| MIT/X Consortium License | ||||
|  | ||||
| © 2006-2017 Anselm R Garbe <anselm@garbe.us> | ||||
| © 2006-2019 Anselm R Garbe <anselm@garbe.ca> | ||||
| © 2006-2009 Jukka Salmi <jukka at salmi dot ch> | ||||
| © 2006-2007 Sander van Dijk <a dot h dot vandijk at gmail dot com> | ||||
| © 2007-2011 Peter Hartlich <sgkkr at hartlich dot com> | ||||
|   | ||||
| @@ -36,6 +36,7 @@ static const Rule rules[] = { | ||||
| static const float mfact     = 0.55; /* factor of master area size [0.05..0.95] */ | ||||
| static const int nmaster     = 1;    /* number of clients in master area */ | ||||
| static const int resizehints = 1;    /* 1 means respect size hints in tiled resizals */ | ||||
| static const int lockfullscreen = 1; /* 1 will force focus on the fullscreen window */ | ||||
|  | ||||
| static const Layout layouts[] = { | ||||
| 	/* symbol     arrange function */ | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| # dwm version | ||||
| VERSION = 6.1 | ||||
| VERSION = 6.2 | ||||
|  | ||||
| # Customize below to fit your system | ||||
|  | ||||
| @@ -26,7 +26,7 @@ INCS = -I. -I/usr/include -I${X11INC} -I${FREETYPEINC} `pkg-config --cflags xft | ||||
| LIBS = -L/usr/lib -lc -L${X11LIB} -lX11 ${XINERAMALIBS} ${FREETYPELIBS} `pkg-config --libs xft pango pangoxft` | ||||
|  | ||||
| # 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  = -s ${LIBS} | ||||
|   | ||||
							
								
								
									
										17
									
								
								drw.c
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								drw.c
									
									
									
									
									
								
							| @@ -95,6 +95,7 @@ drw_free(Drw *drw) | ||||
| { | ||||
| 	XFreePixmap(drw->dpy, drw->drawable); | ||||
| 	XFreeGC(drw->dpy, drw->gc); | ||||
| 	drw_fontset_free(drw->fonts); | ||||
| 	free(drw); | ||||
| } | ||||
|  | ||||
| @@ -132,6 +133,19 @@ xfont_create(Drw *drw, const char *fontname, FcPattern *fontpattern) | ||||
| 		die("no font specified."); | ||||
| 	} | ||||
|  | ||||
| 	/* Do not allow using color fonts. This is a workaround for a BadLength | ||||
| 	 * error from Xft with color glyphs. Modelled on the Xterm workaround. See | ||||
| 	 * https://bugzilla.redhat.com/show_bug.cgi?id=1498269 | ||||
| 	 * https://lists.suckless.org/dev/1701/30932.html | ||||
| 	 * https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=916349 | ||||
| 	 * and lots more all over the internet. | ||||
| 	 */ | ||||
| 	FcBool iscol; | ||||
| 	if(FcPatternGetBool(xfont->pattern, FC_COLOR, 0, &iscol) == FcResultMatch && iscol) { | ||||
| 		XftFontClose(drw->dpy, xfont); | ||||
| 		return NULL; | ||||
| 	} | ||||
|  | ||||
| 	font = ecalloc(1, sizeof(Fnt)); | ||||
| 	font->xfont = xfont; | ||||
| 	font->pattern = pattern; | ||||
| @@ -200,7 +214,7 @@ drw_scm_create(Drw *drw, const char *clrnames[], size_t clrcount) | ||||
| 	Clr *ret; | ||||
|  | ||||
| 	/* need at least two colors for a scheme */ | ||||
| 	if (!drw || !clrnames || clrcount < 2 || !(ret = ecalloc(clrcount, sizeof(Clr)))) | ||||
| 	if (!drw || !clrnames || clrcount < 2 || !(ret = ecalloc(clrcount, sizeof(XftColor)))) | ||||
| 		return NULL; | ||||
|  | ||||
| 	for (i = 0; i < clrcount; i++) | ||||
| @@ -337,6 +351,7 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lp | ||||
| 			fcpattern = FcPatternDuplicate(drw->fonts->pattern); | ||||
| 			FcPatternAddCharSet(fcpattern, FC_CHARSET, fccharset); | ||||
| 			FcPatternAddBool(fcpattern, FC_SCALABLE, FcTrue); | ||||
| 			FcPatternAddBool(fcpattern, FC_COLOR, FcFalse); | ||||
|  | ||||
| 			FcConfigSubstitute(NULL, fcpattern, FcMatchPattern); | ||||
| 			FcDefaultSubstitute(fcpattern); | ||||
|   | ||||
							
								
								
									
										2
									
								
								dwm.1
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								dwm.1
									
									
									
									
									
								
							| @@ -33,7 +33,7 @@ dwm draws a small border around windows to indicate the focus state. | ||||
| .SH OPTIONS | ||||
| .TP | ||||
| .B \-v | ||||
| prints version information to standard output, then exits. | ||||
| prints version information to stderr, then exits. | ||||
| .SH USAGE | ||||
| .SS Status bar | ||||
| .TP | ||||
|   | ||||
							
								
								
									
										21
									
								
								dwm.c
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								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); | ||||
| @@ -439,7 +440,7 @@ buttonpress(XEvent *e) | ||||
| 			arg.ui = 1 << i; | ||||
| 		} else if (ev->x < x + blw) | ||||
| 			click = ClkLtSymbol; | ||||
| 		else if (ev->x > selmon->ww - TEXTW(stext)) | ||||
| 		else if (ev->x > selmon->ww - (int)TEXTW(stext)) | ||||
| 			click = ClkStatusText; | ||||
| 		else | ||||
| 			click = ClkWinTitle; | ||||
| @@ -695,7 +696,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 +705,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 +729,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); | ||||
| @@ -834,7 +835,7 @@ focusstack(const Arg *arg) | ||||
| { | ||||
| 	Client *c = NULL, *i; | ||||
|  | ||||
| 	if (!selmon->sel) | ||||
| 	if (!selmon->sel || (selmon->sel->isfullscreen && lockfullscreen)) | ||||
| 		return; | ||||
| 	if (arg->i > 0) { | ||||
| 		for (c = selmon->sel->next; c && !ISVISIBLE(c); c = c->next); | ||||
| @@ -1520,7 +1521,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); | ||||
| @@ -1696,12 +1697,14 @@ tile(Monitor *m) | ||||
| 			r = MIN(n, m->nmaster) - i; | ||||
| 			h = (m->wh - my - gappx * (r - 1)) / r; | ||||
| 			resize(c, m->wx, m->wy + my, mw - (2*c->bw), h - (2*c->bw), 0); | ||||
| 			my += HEIGHT(c) + gappx; | ||||
| 			if (my + HEIGHT(c) < m->wh) | ||||
| 				my += HEIGHT(c) + gappx; | ||||
| 		} else { | ||||
| 			r = n - i; | ||||
| 			h = (m->wh - ty - gappx * (r - 1)) / r; | ||||
| 			resize(c, m->wx + mw + g, m->wy + ty, m->ww - mw - g - (2*c->bw), h - (2*c->bw), False); | ||||
| 			ty += HEIGHT(c) + gappx; | ||||
| 			if (ty + HEIGHT(c) < m->wh) | ||||
| 				ty += HEIGHT(c) + gappx; | ||||
| 		} | ||||
| 	if (n > 0) /* override layout symbol */ | ||||
| 		snprintf(m->ltsymbol, sizeof m->ltsymbol, "[%d]=", m->nmaster); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user