diff options
| -rw-r--r-- | localports/dwl/APKBUILD | 4 | ||||
| -rw-r--r-- | localports/dwl/vanitygaps.patch | 345 |
2 files changed, 1 insertions, 348 deletions
diff --git a/localports/dwl/APKBUILD b/localports/dwl/APKBUILD index 78b1b61..72584b0 100644 --- a/localports/dwl/APKBUILD +++ b/localports/dwl/APKBUILD @@ -11,7 +11,6 @@ options="!check" # no tests subpackages="$pkgname-doc" source="$pkgname-$pkgver.tar.gz::https://github.com/djpohly/dwl/archive/refs/tags/v$pkgver.tar.gz xwayland.patch - vanitygaps.patch config.h " @@ -31,6 +30,5 @@ package() { sha512sums=" 6e15e05001e6469d13bef2d532980585d57de55c8feb461a7c25a76d7cdaee022785485faca02cd9d1214457fbeb1bec0eb652700ba0ddccca4aa780df0046b2 dwl-0.4.tar.gz 7c7952ede929faa137f690b3d1f44c1af4b40a3a6dac7bc3d5a377c8c454b35de1becdbbd1f3cbbde56c798f4f3bf78bc7eef4d7faa0e761d317179c072c629f xwayland.patch -cfe834c3f4df683ee44320f7acf7830625572d3095af46021827e4d4979ef73137272ff71f2f6613ee22b30b4ae7876d1a07f4d9dd3cd79d2e00b35b000202a3 vanitygaps.patch -1e6ba36da27d8c5da5ac9176ddf816fc055fb8485f69efc764f1191f008503ff4ecc163e42cff4600648178c886d695187fbf49388796c61f05bd2b4717e7993 config.h +e8a0806617a02c30579f4a76cd2186c96636dc8b3816870c588273c9637fa5c15bfb17aea773c93f9e6ae60dd9687bb250a762d1c6ba89858afaf467b62ad286 config.h " diff --git a/localports/dwl/vanitygaps.patch b/localports/dwl/vanitygaps.patch deleted file mode 100644 index 38dfe88..0000000 --- a/localports/dwl/vanitygaps.patch +++ /dev/null @@ -1,345 +0,0 @@ -From f06d32ffc78c2ef87eaecc1051550facac9a8b8e Mon Sep 17 00:00:00 2001 -From: Bonicgamer <44382222+Bonicgamer@users.noreply.github.com> -Date: Mon, 17 Aug 2020 14:48:24 -0400 -Subject: [PATCH 1/2] Implement vanitygaps - ---- - config.def.h | 21 ++++++++ - dwl.c | 150 +++++++++++++++++++++++++++++++++++++++++++++++---- - 2 files changed, 161 insertions(+), 10 deletions(-) - -diff --git a/config.def.h b/config.def.h -index c6a49504..91439bef 100644 ---- a/config.def.h -+++ b/config.def.h -@@ -1,7 +1,12 @@ - /* appearance */ - static const int sloppyfocus = 1; /* focus follows mouse */ - static const int bypass_surface_visibility = 0; /* 1 means idle inhibitors will disable idle tracking even if it's surface isn't visible */ -+static const int smartgaps = 0; /* 1 means no outer gap when there is only one window */ - static const unsigned int borderpx = 1; /* border pixel of windows */ -+static const unsigned int gappih = 10; /* horiz inner gap between windows */ -+static const unsigned int gappiv = 10; /* vert inner gap between windows */ -+static const unsigned int gappoh = 10; /* horiz outer gap between windows and screen edge */ -+static const unsigned int gappov = 10; /* vert outer gap between windows and screen edge */ - static const float bordercolor[] = {0.5, 0.5, 0.5, 1.0}; - static const float focuscolor[] = {1.0, 0.0, 0.0, 1.0}; - /* To conform the xdg-protocol, set the alpha to zero to restore the old behavior */ -@@ -117,6 +122,22 @@ static const Key keys[] = { - { MODKEY, XKB_KEY_d, incnmaster, {.i = -1} }, - { MODKEY, XKB_KEY_h, setmfact, {.f = -0.05} }, - { MODKEY, XKB_KEY_l, setmfact, {.f = +0.05} }, -+ { MODKEY|WLR_MODIFIER_LOGO, XKB_KEY_h, incgaps, {.i = +1 } }, -+ { MODKEY|WLR_MODIFIER_LOGO, XKB_KEY_l, incgaps, {.i = -1 } }, -+ { MODKEY|WLR_MODIFIER_LOGO|WLR_MODIFIER_SHIFT, XKB_KEY_H, incogaps, {.i = +1 } }, -+ { MODKEY|WLR_MODIFIER_LOGO|WLR_MODIFIER_SHIFT, XKB_KEY_L, incogaps, {.i = -1 } }, -+ { MODKEY|WLR_MODIFIER_LOGO|WLR_MODIFIER_CTRL, XKB_KEY_h, incigaps, {.i = +1 } }, -+ { MODKEY|WLR_MODIFIER_LOGO|WLR_MODIFIER_CTRL, XKB_KEY_l, incigaps, {.i = -1 } }, -+ { MODKEY|WLR_MODIFIER_LOGO, XKB_KEY_0, togglegaps, {0} }, -+ { MODKEY|WLR_MODIFIER_LOGO|WLR_MODIFIER_SHIFT, XKB_KEY_parenright,defaultgaps, {0} }, -+ { MODKEY, XKB_KEY_y, incihgaps, {.i = +1 } }, -+ { MODKEY, XKB_KEY_o, incihgaps, {.i = -1 } }, -+ { MODKEY|WLR_MODIFIER_CTRL, XKB_KEY_y, incivgaps, {.i = +1 } }, -+ { MODKEY|WLR_MODIFIER_CTRL, XKB_KEY_o, incivgaps, {.i = -1 } }, -+ { MODKEY|WLR_MODIFIER_LOGO, XKB_KEY_y, incohgaps, {.i = +1 } }, -+ { MODKEY|WLR_MODIFIER_LOGO, XKB_KEY_o, incohgaps, {.i = -1 } }, -+ { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_Y, incovgaps, {.i = +1 } }, -+ { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_O, incovgaps, {.i = -1 } }, - { MODKEY, XKB_KEY_Return, zoom, {0} }, - { MODKEY, XKB_KEY_Tab, view, {0} }, - { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_C, killclient, {0} }, -diff --git a/dwl.c b/dwl.c -index 6c34e326..f6d36932 100644 ---- a/dwl.c -+++ b/dwl.c -@@ -185,6 +185,10 @@ struct Monitor { - struct wlr_box w; /* window area, layout-relative */ - struct wl_list layers[4]; /* LayerSurface::link */ - const Layout *lt[2]; -+ int gappih; /* horizontal gap between windows */ -+ int gappiv; /* vertical gap between windows */ -+ int gappoh; /* horizontal outer gaps */ -+ int gappov; /* vertical outer gaps */ - unsigned int seltags; - unsigned int sellt; - uint32_t tagset[2]; -@@ -246,6 +250,7 @@ static void createmon(struct wl_listener *listener, void *data); - static void createnotify(struct wl_listener *listener, void *data); - static void createpointer(struct wlr_pointer *pointer); - static void cursorframe(struct wl_listener *listener, void *data); -+static void defaultgaps(const Arg *arg); - static void destroydragicon(struct wl_listener *listener, void *data); - static void destroyidleinhibitor(struct wl_listener *listener, void *data); - static void destroylayersurfacenotify(struct wl_listener *listener, void *data); -@@ -261,6 +266,13 @@ static void focusstack(const Arg *arg); - static Client *focustop(Monitor *m); - static void fullscreennotify(struct wl_listener *listener, void *data); - static void incnmaster(const Arg *arg); -+static void incgaps(const Arg *arg); -+static void incigaps(const Arg *arg); -+static void incihgaps(const Arg *arg); -+static void incivgaps(const Arg *arg); -+static void incogaps(const Arg *arg); -+static void incohgaps(const Arg *arg); -+static void incovgaps(const Arg *arg); - static void inputdevice(struct wl_listener *listener, void *data); - static int keybinding(uint32_t mods, xkb_keysym_t sym); - static void keypress(struct wl_listener *listener, void *data); -@@ -291,6 +303,7 @@ static void run(char *startup_cmd); - static void setcursor(struct wl_listener *listener, void *data); - static void setfloating(Client *c, int floating); - static void setfullscreen(Client *c, int fullscreen); -+static void setgaps(int oh, int ov, int ih, int iv); - static void setlayout(const Arg *arg); - static void setmfact(const Arg *arg); - static void setmon(Client *c, Monitor *m, uint32_t newtags); -@@ -304,6 +317,7 @@ static void tagmon(const Arg *arg); - static void tile(Monitor *m); - static void togglefloating(const Arg *arg); - static void togglefullscreen(const Arg *arg); -+static void togglegaps(const Arg *arg); - static void toggletag(const Arg *arg); - static void toggleview(const Arg *arg); - static void unlocksession(struct wl_listener *listener, void *data); -@@ -364,6 +378,8 @@ static struct wlr_box sgeom; - static struct wl_list mons; - static Monitor *selmon; - -+static int enablegaps = 1; /* enables gaps, used by togglegaps */ -+ - /* global event handlers */ - static struct wl_listener cursor_axis = {.notify = axisnotify}; - static struct wl_listener cursor_button = {.notify = buttonpress}; -@@ -910,6 +926,11 @@ createmon(struct wl_listener *listener, void *data) - /* Initialize monitor state using configured rules */ - for (i = 0; i < LENGTH(m->layers); i++) - wl_list_init(&m->layers[i]); -+ -+ m->gappih = gappih; -+ m->gappiv = gappiv; -+ m->gappoh = gappoh; -+ m->gappov = gappov; - m->tagset[0] = m->tagset[1] = 1; - for (r = monrules; r < END(monrules); r++) { - if (!r->name || strstr(wlr_output->name, r->name)) { -@@ -1072,6 +1093,12 @@ cursorframe(struct wl_listener *listener, void *data) - wlr_seat_pointer_notify_frame(seat); - } - -+void -+defaultgaps(const Arg *arg) -+{ -+ setgaps(gappoh, gappov, gappih, gappiv); -+} -+ - void - destroydragicon(struct wl_listener *listener, void *data) - { -@@ -1334,6 +1361,83 @@ incnmaster(const Arg *arg) - arrange(selmon); - } - -+void -+incgaps(const Arg *arg) -+{ -+ setgaps( -+ selmon->gappoh + arg->i, -+ selmon->gappov + arg->i, -+ selmon->gappih + arg->i, -+ selmon->gappiv + arg->i -+ ); -+} -+ -+void -+incigaps(const Arg *arg) -+{ -+ setgaps( -+ selmon->gappoh, -+ selmon->gappov, -+ selmon->gappih + arg->i, -+ selmon->gappiv + arg->i -+ ); -+} -+ -+void -+incihgaps(const Arg *arg) -+{ -+ setgaps( -+ selmon->gappoh, -+ selmon->gappov, -+ selmon->gappih + arg->i, -+ selmon->gappiv -+ ); -+} -+ -+void -+incivgaps(const Arg *arg) -+{ -+ setgaps( -+ selmon->gappoh, -+ selmon->gappov, -+ selmon->gappih, -+ selmon->gappiv + arg->i -+ ); -+} -+ -+void -+incogaps(const Arg *arg) -+{ -+ setgaps( -+ selmon->gappoh + arg->i, -+ selmon->gappov + arg->i, -+ selmon->gappih, -+ selmon->gappiv -+ ); -+} -+ -+void -+incohgaps(const Arg *arg) -+{ -+ setgaps( -+ selmon->gappoh + arg->i, -+ selmon->gappov, -+ selmon->gappih, -+ selmon->gappiv -+ ); -+} -+ -+void -+incovgaps(const Arg *arg) -+{ -+ setgaps( -+ selmon->gappoh, -+ selmon->gappov + arg->i, -+ selmon->gappih, -+ selmon->gappiv -+ ); -+} -+ - void - inputdevice(struct wl_listener *listener, void *data) - { -@@ -2040,6 +2144,16 @@ setfullscreen(Client *c, int fullscreen) - printstatus(); - } - -+void -+setgaps(int oh, int ov, int ih, int iv) -+{ -+ selmon->gappoh = MAX(oh, 0); -+ selmon->gappov = MAX(ov, 0); -+ selmon->gappih = MAX(ih, 0); -+ selmon->gappiv = MAX(iv, 0); -+ arrange(selmon); -+} -+ - void - setlayout(const Arg *arg) - { -@@ -2359,7 +2473,7 @@ tagmon(const Arg *arg) - void - tile(Monitor *m) - { -- unsigned int i, n = 0, mw, my, ty; -+ unsigned int i, n = 0, h, r, oe = enablegaps, ie = enablegaps, mw, my, ty; - Client *c; - - wl_list_for_each(c, &clients, link) -@@ -2367,23 +2481,32 @@ tile(Monitor *m) - n++; - if (n == 0) - return; -+ -+ if (smartgaps == n) { -+ oe = 0; // outer gaps disabled -+ } - - if (n > m->nmaster) -- mw = m->nmaster ? m->w.width * m->mfact : 0; -+ mw = m->nmaster ? (m->w.width + m->gappiv*ie) * m->mfact : 0; - else -- mw = m->w.width; -- i = my = ty = 0; -+ mw = m->w.width - 2*m->gappov*oe + m->gappiv*ie; -+ i = 0; -+ my = ty = m->gappoh*oe; - wl_list_for_each(c, &clients, link) { - if (!VISIBLEON(c, m) || c->isfloating || c->isfullscreen) - continue; - if (i < m->nmaster) { -- resize(c, (struct wlr_box){.x = m->w.x, .y = m->w.y + my, .width = mw, -- .height = (m->w.height - my) / (MIN(n, m->nmaster) - i)}, 0); -- my += c->geom.height; -+ r = MIN(n, m->nmaster) - i; -+ h = (m->w.height - my - m->gappoh*oe - m->gappih*ie * (r - 1)) / r; -+ resize(c, (struct wlr_box){.x = m->w.x + m->gappov*oe, .y = m->w.y + my, -+ .width = mw - m->gappiv*ie, .height = h}, 0); -+ my += c->geom.height + m->gappih*ie; - } else { -- resize(c, (struct wlr_box){.x = m->w.x + mw, .y = m->w.y + ty, -- .width = m->w.width - mw, .height = (m->w.height - ty) / (n - i)}, 0); -- ty += c->geom.height; -+ r = n - i; -+ h = (m->w.height - ty - m->gappoh*oe - m->gappih*ie * (r - 1)) / r; -+ resize(c, (struct wlr_box){.x = m->w.x + mw + m->gappov*oe, .y = m->w.y + ty, -+ .width = m->w.width - mw - 2*m->gappov*oe, .height = h}, 0); -+ ty += c->geom.height + m->gappih*ie; - } - i++; - } -@@ -2406,6 +2529,13 @@ togglefullscreen(const Arg *arg) - setfullscreen(sel, !sel->isfullscreen); - } - -+void -+togglegaps(const Arg *arg) -+{ -+ enablegaps = !enablegaps; -+ arrange(selmon); -+} -+ - void - toggletag(const Arg *arg) - { - -From 7f1760e12b0698b1b5622465fcdfc6186d87954f Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Leonardo=20Hern=C3=A1ndez=20Hern=C3=A1ndez?= - <leohdz172@protonmail.com> -Date: Wed, 20 Jul 2022 00:15:32 -0500 -Subject: [PATCH 2/2] allow gaps in monocle layout if requested - ---- - config.def.h | 1 + - dwl.c | 6 +++++- - 2 files changed, 6 insertions(+), 1 deletion(-) - -diff --git a/config.def.h b/config.def.h -index 91439bef..1c3bf804 100644 ---- a/config.def.h -+++ b/config.def.h -@@ -2,6 +2,7 @@ - static const int sloppyfocus = 1; /* focus follows mouse */ - static const int bypass_surface_visibility = 0; /* 1 means idle inhibitors will disable idle tracking even if it's surface isn't visible */ - static const int smartgaps = 0; /* 1 means no outer gap when there is only one window */ -+static const int monoclegaps = 0; /* 1 means outer gaps in monocle layout */ - static const unsigned int borderpx = 1; /* border pixel of windows */ - static const unsigned int gappih = 10; /* horiz inner gap between windows */ - static const unsigned int gappiv = 10; /* vert inner gap between windows */ -diff --git a/dwl.c b/dwl.c -index f6d36932..71c5b445 100644 ---- a/dwl.c -+++ b/dwl.c -@@ -1702,8 +1702,12 @@ monocle(Monitor *m) - wl_list_for_each(c, &clients, link) { - if (!VISIBLEON(c, m) || c->isfloating || c->isfullscreen) - continue; -- resize(c, m->w, 0); - n++; -+ if (!monoclegaps) -+ resize(c, m->w, 0); -+ else -+ resize(c, (struct wlr_box){.x = m->w.x + gappoh, .y = m->w.y + gappov, -+ .width = m->w.width - 2 * gappoh, .height = m->w.height - 2 * gappov}, 0); - } - if (n) - snprintf(m->ltsymbol, LENGTH(m->ltsymbol), "[%d]", n); |
