feat: added gaps
d8ed0178
6 file(s) · +68 −47
| 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) |
|
| 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) |
|
Binary file — no preview.
| 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 | ||
Binary file — no preview.
| 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); |