Compare commits
	
		
			6 Commits
		
	
	
		
			cb3f58ad06
			...
			fibonacci
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | e6afb29fa7 | ||
|  | f09418bbb6 | ||
|  | ed3ab6b4fc | ||
|  | f087d20e6e | ||
|  | a8e9513783 | ||
|  | c82db690cc | 
| @@ -36,11 +36,14 @@ 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 nmaster     = 1;    /* number of clients in master area */ | ||||||
| static const int resizehints = 1;    /* 1 means respect size hints in tiled resizals */ | static const int resizehints = 1;    /* 1 means respect size hints in tiled resizals */ | ||||||
|  |  | ||||||
|  | #include "fibonacci.c" | ||||||
| static const Layout layouts[] = { | static const Layout layouts[] = { | ||||||
| 	/* symbol     arrange function */ | 	/* symbol     arrange function */ | ||||||
| 	{ "[]=",      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 }, | ||||||
|  |     { "[@]",      spiral }, | ||||||
|  |     { "[\\]",      dwindle }, | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /* key definitions */ | /* key definitions */ | ||||||
| @@ -76,6 +79,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_r,      setlayout,      {.v = &layouts[3]} }, | ||||||
|  | 	{ MODKEY|ShiftMask,             XK_r,      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} | ||||||
|   | |||||||
							
								
								
									
										17
									
								
								dwm.c
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								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); | ||||||
| @@ -695,7 +696,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 +705,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 +729,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 +1521,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,11 +1689,13 @@ 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); | ||||||
| 			my += HEIGHT(c); | 			if (my + HEIGHT(c) < m->wh) | ||||||
|  | 				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); | ||||||
| 			ty += HEIGHT(c); | 			if (ty + HEIGHT(c) < m->wh) | ||||||
|  | 				ty += HEIGHT(c); | ||||||
| 		} | 		} | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										66
									
								
								fibonacci.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								fibonacci.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,66 @@ | |||||||
|  | void | ||||||
|  | fibonacci(Monitor *mon, int s) { | ||||||
|  | 	unsigned int i, n, nx, ny, nw, nh; | ||||||
|  | 	Client *c; | ||||||
|  |  | ||||||
|  | 	for(n = 0, c = nexttiled(mon->clients); c; c = nexttiled(c->next), n++); | ||||||
|  | 	if(n == 0) | ||||||
|  | 		return; | ||||||
|  | 	 | ||||||
|  | 	nx = mon->wx; | ||||||
|  | 	ny = 0; | ||||||
|  | 	nw = mon->ww; | ||||||
|  | 	nh = mon->wh; | ||||||
|  | 	 | ||||||
|  | 	for(i = 0, c = nexttiled(mon->clients); c; c = nexttiled(c->next)) { | ||||||
|  | 		if((i % 2 && nh / 2 > 2 * c->bw) | ||||||
|  | 		   || (!(i % 2) && nw / 2 > 2 * c->bw)) { | ||||||
|  | 			if(i < n - 1) { | ||||||
|  | 				if(i % 2) | ||||||
|  | 					nh /= 2; | ||||||
|  | 				else | ||||||
|  | 					nw /= 2; | ||||||
|  | 				if((i % 4) == 2 && !s) | ||||||
|  | 					nx += nw; | ||||||
|  | 				else if((i % 4) == 3 && !s) | ||||||
|  | 					ny += nh; | ||||||
|  | 			} | ||||||
|  | 			if((i % 4) == 0) { | ||||||
|  | 				if(s) | ||||||
|  | 					ny += nh; | ||||||
|  | 				else | ||||||
|  | 					ny -= nh; | ||||||
|  | 			} | ||||||
|  | 			else if((i % 4) == 1) | ||||||
|  | 				nx += nw; | ||||||
|  | 			else if((i % 4) == 2) | ||||||
|  | 				ny += nh; | ||||||
|  | 			else if((i % 4) == 3) { | ||||||
|  | 				if(s) | ||||||
|  | 					nx += nw; | ||||||
|  | 				else | ||||||
|  | 					nx -= nw; | ||||||
|  | 			} | ||||||
|  | 			if(i == 0) | ||||||
|  | 			{ | ||||||
|  | 				if(n != 1) | ||||||
|  | 					nw = mon->ww * mon->mfact; | ||||||
|  | 				ny = mon->wy; | ||||||
|  | 			} | ||||||
|  | 			else if(i == 1) | ||||||
|  | 				nw = mon->ww - nw; | ||||||
|  | 			i++; | ||||||
|  | 		} | ||||||
|  | 		resize(c, nx, ny, nw - 2 * c->bw, nh - 2 * c->bw, False); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void | ||||||
|  | dwindle(Monitor *mon) { | ||||||
|  | 	fibonacci(mon, 1); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void | ||||||
|  | spiral(Monitor *mon) { | ||||||
|  | 	fibonacci(mon, 0); | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user