feat: added fibonacci patch 59932c73
Steve Simkins · 2025-11-09 19:41 5 file(s) · +76 −0
config.def.h +5 −0
36 36
static const int resizehints = 1;    /* 1 means respect size hints in tiled resizals */
37 37
static const int lockfullscreen = 1; /* 1 will force focus on the fullscreen window */
38 38
static const int refreshrate = 120;  /* refresh rate (per second) for client move/resize */
39 +
#include "fibonacci.c"
39 40
40 41
static const Layout layouts[] = {
41 42
	/* symbol     arrange function */
42 43
	{ "",      tile },    /* first entry is default */
43 44
	{ "",      NULL },    /* no layout function means floating behavior */
44 45
	{ "",      monocle },
46 +
 	{ "[@]",      spiral },
47 +
 	{ "[\\]",      dwindle },
45 48
};
46 49
47 50
/* key definitions */
84 87
	{ MODKEY,                       XK_t,      setlayout,      {.v = &layouts[0]} },
85 88
	{ MODKEY,                       XK_f,      setlayout,      {.v = &layouts[1]} },
86 89
	{ MODKEY,                       XK_m,      setlayout,      {.v = &layouts[2]} },
90 +
	{ MODKEY,                       XK_r,      setlayout,      {.v = &layouts[3]} },
91 +
	{ MODKEY|ShiftMask,             XK_r,      setlayout,      {.v = &layouts[4]} },
87 92
	{ MODKEY,                       XK_space,  setlayout,      {0} },
88 93
	{ MODKEY|ShiftMask,             XK_space,  togglefloating, {0} },
89 94
	{ MODKEY,                       XK_0,      view,           {.ui = ~0 } },
config.h +5 −0
36 36
static const int resizehints = 1;    /* 1 means respect size hints in tiled resizals */
37 37
static const int lockfullscreen = 1; /* 1 will force focus on the fullscreen window */
38 38
static const int refreshrate = 120;  /* refresh rate (per second) for client move/resize */
39 +
#include "fibonacci.c"
39 40
40 41
static const Layout layouts[] = {
41 42
	/* symbol     arrange function */
42 43
	{ "",      tile },    /* first entry is default */
43 44
	{ "",      NULL },    /* no layout function means floating behavior */
44 45
	{ "",      monocle },
46 +
 	{ "[@]",      spiral },
47 +
 	{ "[\\]",      dwindle },
45 48
};
46 49
47 50
/* key definitions */
84 87
	{ MODKEY,                       XK_t,      setlayout,      {.v = &layouts[0]} },
85 88
	{ MODKEY,                       XK_f,      setlayout,      {.v = &layouts[1]} },
86 89
	{ MODKEY,                       XK_m,      setlayout,      {.v = &layouts[2]} },
90 +
	{ MODKEY,                       XK_r,      setlayout,      {.v = &layouts[3]} },
91 +
	{ MODKEY|ShiftMask,             XK_r,      setlayout,      {.v = &layouts[4]} },
87 92
	{ MODKEY,                       XK_space,  setlayout,      {0} },
88 93
	{ MODKEY|ShiftMask,             XK_space,  togglefloating, {0} },
89 94
	{ MODKEY,                       XK_0,      view,           {.ui = ~0 } },
dwm +0 −0

Binary file — no preview.

dwm.o +0 −0

Binary file — no preview.

fibonacci.c (added) +66 −0
1 +
void
2 +
fibonacci(Monitor *mon, int s) {
3 +
	unsigned int i, n, nx, ny, nw, nh;
4 +
	Client *c;
5 +
6 +
	for(n = 0, c = nexttiled(mon->clients); c; c = nexttiled(c->next), n++);
7 +
	if(n == 0)
8 +
		return;
9 +
	
10 +
	nx = mon->wx;
11 +
	ny = 0;
12 +
	nw = mon->ww;
13 +
	nh = mon->wh;
14 +
	
15 +
	for(i = 0, c = nexttiled(mon->clients); c; c = nexttiled(c->next)) {
16 +
		if((i % 2 && nh / 2 > 2 * c->bw)
17 +
		   || (!(i % 2) && nw / 2 > 2 * c->bw)) {
18 +
			if(i < n - 1) {
19 +
				if(i % 2)
20 +
					nh /= 2;
21 +
				else
22 +
					nw /= 2;
23 +
				if((i % 4) == 2 && !s)
24 +
					nx += nw;
25 +
				else if((i % 4) == 3 && !s)
26 +
					ny += nh;
27 +
			}
28 +
			if((i % 4) == 0) {
29 +
				if(s)
30 +
					ny += nh;
31 +
				else
32 +
					ny -= nh;
33 +
			}
34 +
			else if((i % 4) == 1)
35 +
				nx += nw;
36 +
			else if((i % 4) == 2)
37 +
				ny += nh;
38 +
			else if((i % 4) == 3) {
39 +
				if(s)
40 +
					nx += nw;
41 +
				else
42 +
					nx -= nw;
43 +
			}
44 +
			if(i == 0)
45 +
			{
46 +
				if(n != 1)
47 +
					nw = mon->ww * mon->mfact;
48 +
				ny = mon->wy;
49 +
			}
50 +
			else if(i == 1)
51 +
				nw = mon->ww - nw;
52 +
			i++;
53 +
		}
54 +
		resize(c, nx, ny, nw - 2 * c->bw, nh - 2 * c->bw, False);
55 +
	}
56 +
}
57 +
58 +
void
59 +
dwindle(Monitor *mon) {
60 +
	fibonacci(mon, 1);
61 +
}
62 +
63 +
void
64 +
spiral(Monitor *mon) {
65 +
	fibonacci(mon, 0);
66 +
}