feat: added gaps d8ed0178
Steve Simkins · 2025-11-10 16:05 6 file(s) · +68 −47
config.def.h +12 −8
1 1
/* See LICENSE file for copyright and license details. */
2 2
/* appearance */
3 3
static const unsigned int borderpx  = 2;        /* border pixel of windows */
4 +
static const unsigned int gappx     = 25;        /* gaps between windows */
4 5
static const unsigned int snap      = 32;       /* snap pixel */
5 6
static const int showbar            = 1;        /* 0 means no bar */
6 7
static const int topbar             = 1;        /* 0 means bottom bar */
40 41
41 42
static const Layout layouts[] = {
42 43
	/* symbol     arrange function */
43 -
	{ "",      tile },    /* first entry is default */
44 +
	{ "",      dwindle },
44 45
	{ "",      NULL },    /* no layout function means floating behavior */
45 46
	{ "",      monocle },
46 -
 	{ "[@]",      spiral },
47 -
 	{ "[\\]",      dwindle },
47 +
	// { "",      tile },    /* first entry is default */
48 +
	// 	{ "[@]",      spiral },
48 49
};
49 50
50 51
/* key definitions */
62 63
static const char *dmenucmd[] = { "rofi", "-show", "drun", NULL };
63 64
static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */
64 65
static const char *termcmd[]  = { "wezterm", NULL };
65 -
// static const char *browsercmd[]  = { "/home/stevedylandev/Applications/helium-0.6.4.1-x86_64_892a013378cdb3a291a71a624890c408.AppImage %U", NULL };
66 +
static const char *browsercmd[]  = { "chromium", "--force-device-scale-factor=1.2", NULL };
66 67
67 68
static const Key keys[] = {
68 69
	/* modifier                     key        function        argument */
69 70
	{ MODKEY,                       XK_p,      spawn,          {.v = dmenucmd } },
70 71
	{ MODKEY,                       XK_Return, spawn,          {.v = termcmd } },
71 -
	{ MODKEY,                       XK_b,			 spawn,          SHCMD("/home/stevedylandev/Applications/helium-0.6.4.1-x86_64_892a013378cdb3a291a71a624890c408.AppImage %U")},
72 +
	{ MODKEY,                       XK_b,			 spawn,          {.v = browsercmd }},
72 73
	{ MODKEY,                       XK_j,      focusstack,     {.i = +1 } },
73 74
	{ MODKEY,                       XK_k,      focusstack,     {.i = -1 } },
74 75
	{ MODKEY,                       XK_h,      focusstack,     {.i = -1 } },
86 87
	{ MODKEY|ShiftMask,             XK_c,      killclient,     {0} },
87 88
	{ MODKEY,                       XK_t,      setlayout,      {.v = &layouts[0]} },
88 89
	{ MODKEY,                       XK_f,      setlayout,      {.v = &layouts[1]} },
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]} },
90 +
	{ MODKEY,                       XK_z,      setlayout,      {.v = &layouts[2]} },
91 +
	// { MODKEY,                       XK_r,      setlayout,      {.v = &layouts[3]} },
92 +
	// { MODKEY|ShiftMask,             XK_r,      setlayout,      {.v = &layouts[4]} },
92 93
	{ MODKEY,                       XK_space,  setlayout,      {0} },
93 94
	{ MODKEY|ShiftMask,             XK_space,  togglefloating, {0} },
94 95
	{ MODKEY,                       XK_0,      view,           {.ui = ~0 } },
97 98
	{ MODKEY,                       XK_period, focusmon,       {.i = +1 } },
98 99
	{ MODKEY|ShiftMask,             XK_comma,  tagmon,         {.i = -1 } },
99 100
	{ MODKEY|ShiftMask,             XK_period, tagmon,         {.i = +1 } },
101 +
	{ MODKEY,                       XK_minus,  setgaps,        {.i = -1 } },
102 +
	{ MODKEY,                       XK_equal,  setgaps,        {.i = +1 } },
103 +
	{ MODKEY|ShiftMask,             XK_equal,  setgaps,        {.i = 0  } },
100 104
	TAGKEYS(                        XK_1,                      0)
101 105
	TAGKEYS(                        XK_2,                      1)
102 106
	TAGKEYS(                        XK_3,                      2)
config.h +12 −8
1 1
/* See LICENSE file for copyright and license details. */
2 2
/* appearance */
3 3
static const unsigned int borderpx  = 2;        /* border pixel of windows */
4 +
static const unsigned int gappx     = 25;        /* gaps between windows */
4 5
static const unsigned int snap      = 32;       /* snap pixel */
5 6
static const int showbar            = 1;        /* 0 means no bar */
6 7
static const int topbar             = 1;        /* 0 means bottom bar */
40 41
41 42
static const Layout layouts[] = {
42 43
	/* symbol     arrange function */
43 -
	{ "",      tile },    /* first entry is default */
44 +
	{ "",      dwindle },
44 45
	{ "",      NULL },    /* no layout function means floating behavior */
45 46
	{ "",      monocle },
46 -
 	{ "[@]",      spiral },
47 -
 	{ "[\\]",      dwindle },
47 +
	// { "",      tile },    /* first entry is default */
48 +
	// 	{ "[@]",      spiral },
48 49
};
49 50
50 51
/* key definitions */
62 63
static const char *dmenucmd[] = { "rofi", "-show", "drun", NULL };
63 64
static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */
64 65
static const char *termcmd[]  = { "wezterm", NULL };
65 -
// static const char *browsercmd[]  = { "/home/stevedylandev/Applications/helium-0.6.4.1-x86_64_892a013378cdb3a291a71a624890c408.AppImage %U", NULL };
66 +
static const char *browsercmd[]  = { "chromium", "--force-device-scale-factor=1.2", NULL };
66 67
67 68
static const Key keys[] = {
68 69
	/* modifier                     key        function        argument */
69 70
	{ MODKEY,                       XK_p,      spawn,          {.v = dmenucmd } },
70 71
	{ MODKEY,                       XK_Return, spawn,          {.v = termcmd } },
71 -
	{ MODKEY,                       XK_b,			 spawn,          SHCMD("/home/stevedylandev/Applications/helium-0.6.4.1-x86_64_892a013378cdb3a291a71a624890c408.AppImage %U")},
72 +
	{ MODKEY,                       XK_b,			 spawn,          {.v = browsercmd }},
72 73
	{ MODKEY,                       XK_j,      focusstack,     {.i = +1 } },
73 74
	{ MODKEY,                       XK_k,      focusstack,     {.i = -1 } },
74 75
	{ MODKEY,                       XK_h,      focusstack,     {.i = -1 } },
86 87
	{ MODKEY|ShiftMask,             XK_c,      killclient,     {0} },
87 88
	{ MODKEY,                       XK_t,      setlayout,      {.v = &layouts[0]} },
88 89
	{ MODKEY,                       XK_f,      setlayout,      {.v = &layouts[1]} },
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]} },
90 +
	{ MODKEY,                       XK_z,      setlayout,      {.v = &layouts[2]} },
91 +
	// { MODKEY,                       XK_r,      setlayout,      {.v = &layouts[3]} },
92 +
	// { MODKEY|ShiftMask,             XK_r,      setlayout,      {.v = &layouts[4]} },
92 93
	{ MODKEY,                       XK_space,  setlayout,      {0} },
93 94
	{ MODKEY|ShiftMask,             XK_space,  togglefloating, {0} },
94 95
	{ MODKEY,                       XK_0,      view,           {.ui = ~0 } },
97 98
	{ MODKEY,                       XK_period, focusmon,       {.i = +1 } },
98 99
	{ MODKEY|ShiftMask,             XK_comma,  tagmon,         {.i = -1 } },
99 100
	{ MODKEY|ShiftMask,             XK_period, tagmon,         {.i = +1 } },
101 +
	{ MODKEY,                       XK_minus,  setgaps,        {.i = -1 } },
102 +
	{ MODKEY,                       XK_equal,  setgaps,        {.i = +1 } },
103 +
	{ MODKEY|ShiftMask,             XK_equal,  setgaps,        {.i = 0  } },
100 104
	TAGKEYS(                        XK_1,                      0)
101 105
	TAGKEYS(                        XK_2,                      1)
102 106
	TAGKEYS(                        XK_3,                      2)
dwm +0 −0

Binary file — no preview.

dwm.c +24 −11
118 118
	int by;               /* bar geometry */
119 119
	int mx, my, mw, mh;   /* screen size */
120 120
	int wx, wy, ww, wh;   /* window area  */
121 +
	int gappx;            /* gaps between windows */
121 122
	unsigned int seltags;
122 123
	unsigned int sellt;
123 124
	unsigned int tagset[2];
200 201
static void setclientstate(Client *c, long state);
201 202
static void setfocus(Client *c);
202 203
static void setfullscreen(Client *c, int fullscreen);
204 +
static void setgaps(const Arg *arg);
203 205
static void setlayout(const Arg *arg);
204 206
static void setmfact(const Arg *arg);
205 207
static void setup(void);
641 643
	m->nmaster = nmaster;
642 644
	m->showbar = showbar;
643 645
	m->topbar = topbar;
646 +
	m->gappx = gappx;
644 647
	m->lt[0] = &layouts[0];
645 648
	m->lt[1] = &layouts[1 % LENGTH(layouts)];
646 649
	strncpy(m->ltsymbol, layouts[0].symbol, sizeof m->ltsymbol);
1508 1511
}
1509 1512
1510 1513
void
1514 +
setgaps(const Arg *arg)
1515 +
{
1516 +
	if ((arg->i == 0) || (selmon->gappx + arg->i < 0))
1517 +
		selmon->gappx = 0;
1518 +
	else
1519 +
		selmon->gappx += arg->i;
1520 +
	arrange(selmon);
1521 +
}
1522 +
1523 +
void
1511 1524
setlayout(const Arg *arg)
1512 1525
{
1513 1526
	if (!arg || !arg->v || arg->v != selmon->lt[selmon->sellt])
1697 1710
	if (n > m->nmaster)
1698 1711
		mw = m->nmaster ? m->ww * m->mfact : 0;
1699 1712
	else
1700 -
		mw = m->ww;
1701 -
	for (i = my = ty = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++)
1702 -
		if (i < m->nmaster) {
1703 -
			h = (m->wh - my) / (MIN(n, m->nmaster) - i);
1704 -
			resize(c, m->wx, m->wy + my, mw - (2*c->bw), h - (2*c->bw), 0);
1705 -
			if (my + HEIGHT(c) < m->wh)
1706 -
				my += HEIGHT(c);
1713 +
		mw = m->ww - m->gappx;
1714 +
	for (i = 0, my = ty = m->gappx, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++)
1715 +
			if (i < m->nmaster) {
1716 +
			h = (m->wh - my) / (MIN(n, m->nmaster) - i) - m->gappx;
1717 +
			resize(c, m->wx + m->gappx, m->wy + my, mw - (2*c->bw) - m->gappx, h - (2*c->bw), 0);
1718 +
			if (my + HEIGHT(c) + m->gappx < m->wh)
1719 +
				my += HEIGHT(c) + m->gappx;
1707 1720
		} else {
1708 -
			h = (m->wh - ty) / (n - i);
1709 -
			resize(c, m->wx + mw, m->wy + ty, m->ww - mw - (2*c->bw), h - (2*c->bw), 0);
1710 -
			if (ty + HEIGHT(c) < m->wh)
1711 -
				ty += HEIGHT(c);
1721 +
			h = (m->wh - ty) / (n - i) - m->gappx;
1722 +
			resize(c, m->wx + mw + m->gappx, m->wy + ty, m->ww - mw - (2*c->bw) - 2*m->gappx, h - (2*c->bw), 0);
1723 +
			if (ty + HEIGHT(c) + m->gappx < m->wh)
1724 +
				ty += HEIGHT(c) + m->gappx;
1712 1725
		}
1713 1726
}
1714 1727
dwm.o +0 −0

Binary file — no preview.

fibonacci.c +20 −20
6 6
	for(n = 0, c = nexttiled(mon->clients); c; c = nexttiled(c->next), n++);
7 7
	if(n == 0)
8 8
		return;
9 -
	
10 -
	nx = mon->wx;
11 -
	ny = 0;
12 -
	nw = mon->ww;
13 -
	nh = mon->wh;
9 +
10 +
	nx = mon->wx + mon->gappx;
11 +
	ny = mon->wy + mon->gappx;
12 +
	nw = mon->ww - 2 * mon->gappx;
13 +
	nh = mon->wh - 2 * mon->gappx;
14 14
	
15 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)) {
16 +
		if((i % 2 && (nh - mon->gappx) / 2 > 2 * c->bw)
17 +
		   || (!(i % 2) && (nw - mon->gappx) / 2 > 2 * c->bw)) {
18 18
			if(i < n - 1) {
19 19
				if(i % 2)
20 -
					nh /= 2;
20 +
					nh = (nh - mon->gappx) / 2;
21 21
				else
22 -
					nw /= 2;
22 +
					nw = (nw - mon->gappx) / 2;
23 23
				if((i % 4) == 2 && !s)
24 -
					nx += nw;
24 +
					nx += nw + mon->gappx;
25 25
				else if((i % 4) == 3 && !s)
26 -
					ny += nh;
26 +
					ny += nh + mon->gappx;
27 27
			}
28 28
			if((i % 4) == 0) {
29 29
				if(s)
30 -
					ny += nh;
30 +
					ny += nh + mon->gappx;
31 31
				else
32 -
					ny -= nh;
32 +
					ny -= nh + mon->gappx;
33 33
			}
34 34
			else if((i % 4) == 1)
35 -
				nx += nw;
35 +
				nx += nw + mon->gappx;
36 36
			else if((i % 4) == 2)
37 -
				ny += nh;
37 +
				ny += nh + mon->gappx;
38 38
			else if((i % 4) == 3) {
39 39
				if(s)
40 -
					nx += nw;
40 +
					nx += nw + mon->gappx;
41 41
				else
42 -
					nx -= nw;
42 +
					nx -= nw + mon->gappx;
43 43
			}
44 44
			if(i == 0)
45 45
			{
46 46
				if(n != 1)
47 -
					nw = mon->ww * mon->mfact;
48 -
				ny = mon->wy;
47 +
					nw = (mon->ww - 2 * mon->gappx) * mon->mfact;
48 +
				ny = mon->wy + mon->gappx;
49 49
			}
50 50
			else if(i == 1)
51 -
				nw = mon->ww - nw;
51 +
				nw = mon->ww - nw - mon->gappx - 2 * mon->gappx;
52 52
			i++;
53 53
		}
54 54
		resize(c, nx, ny, nw - 2 * c->bw, nh - 2 * c->bw, False);