From fb94ea5fd46769f69baa2132551644a2c1d581d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leonardo=20Hern=C3=A1ndez=20Hern=C3=A1ndez?= Date: Sun, 19 Jan 2025 18:10:03 -0600 Subject: [PATCH] client-opacity: rebase against d1c2f434983562bd7d2ace15ab0c05155be603bc --- patches/client-opacity/README.md | 2 +- patches/client-opacity/client-opacity.patch | 61 +++++++++++---------- 2 files changed, 32 insertions(+), 31 deletions(-) diff --git a/patches/client-opacity/README.md b/patches/client-opacity/README.md index 3acc029..ed82d81 100644 --- a/patches/client-opacity/README.md +++ b/patches/client-opacity/README.md @@ -12,7 +12,7 @@ Additionally, it adds some shortcuts: ### Download - [git branch](https://codeberg.org/sevz/dwl/src/branch/client-opacity) -- [2024-06-07](https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/client-opacity/client-opacity.patch) +- [2025-01-20](https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/client-opacity/client-opacity.patch) ### Authors - [sevz](https://codeberg.org/sevz) diff --git a/patches/client-opacity/client-opacity.patch b/patches/client-opacity/client-opacity.patch index ee1d64f..da2faf7 100644 --- a/patches/client-opacity/client-opacity.patch +++ b/patches/client-opacity/client-opacity.patch @@ -1,4 +1,4 @@ -From 652fd0f8c03724fc7addaa2822913790cbbe89f0 Mon Sep 17 00:00:00 2001 +From ba3172875d379ff4f2db69753f50067cecfc8293 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leonardo=20Hern=C3=A1ndez=20Hern=C3=A1ndez?= Date: Tue, 25 Jul 2023 12:48:22 -0600 @@ -11,11 +11,11 @@ Content-Transfer-Encoding: 8bit Signed-off-by: Leonardo Hernández Hernández --- config.def.h | 9 ++++++--- - dwl.c | 38 ++++++++++++++++++++++++++++++++++++++ - 2 files changed, 44 insertions(+), 3 deletions(-) + dwl.c | 39 +++++++++++++++++++++++++++++++++++++++ + 2 files changed, 45 insertions(+), 3 deletions(-) diff --git a/config.def.h b/config.def.h -index a784eb4f..2e3cdfbb 100644 +index 22d2171d..0eb86874 100644 --- a/config.def.h +++ b/config.def.h @@ -13,6 +13,7 @@ static const float focuscolor[] = COLOR(0x005577ff); @@ -26,9 +26,9 @@ index a784eb4f..2e3cdfbb 100644 /* tagging - TAGCOUNT must be no greater than 31 */ #define TAGCOUNT (9) -@@ -21,10 +22,10 @@ static const float fullscreen_bg[] = {0.1f, 0.1f, 0.1f, 1.0f}; /* You ca - static int log_level = WLR_ERROR; +@@ -22,10 +23,10 @@ static int log_level = WLR_ERROR; + /* NOTE: ALWAYS keep a rule declared even if you don't use rules (e.g leave at least one example) */ static const Rule rules[] = { - /* app_id title tags mask isfloating monitor */ + /* app_id title tags mask isfloating alpha monitor */ @@ -40,7 +40,7 @@ index a784eb4f..2e3cdfbb 100644 }; /* layout(s) */ -@@ -130,6 +131,8 @@ static const Key keys[] = { +@@ -133,6 +134,8 @@ static const Key keys[] = { { MODKEY, XKB_KEY_d, incnmaster, {.i = -1} }, { MODKEY, XKB_KEY_h, setmfact, {.f = -0.05f} }, { MODKEY, XKB_KEY_l, setmfact, {.f = +0.05f} }, @@ -50,7 +50,7 @@ index a784eb4f..2e3cdfbb 100644 { MODKEY, XKB_KEY_Tab, view, {0} }, { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_C, killclient, {0} }, diff --git a/dwl.c b/dwl.c -index 6f041a0d..83c3cd23 100644 +index ad21e1ba..0554fcdf 100644 --- a/dwl.c +++ b/dwl.c @@ -138,6 +138,7 @@ typedef struct { @@ -61,7 +61,7 @@ index 6f041a0d..83c3cd23 100644 uint32_t resize; /* configure serial of a pending resize */ } Client; -@@ -228,6 +229,7 @@ typedef struct { +@@ -227,6 +228,7 @@ typedef struct { const char *title; uint32_t tags; int isfloating; @@ -69,7 +69,7 @@ index 6f041a0d..83c3cd23 100644 int monitor; } Rule; -@@ -317,6 +319,7 @@ static void requeststartdrag(struct wl_listener *listener, void *data); +@@ -319,6 +321,7 @@ static void requeststartdrag(struct wl_listener *listener, void *data); static void requestmonstate(struct wl_listener *listener, void *data); static void resize(Client *c, struct wlr_box geo, int interact); static void run(char *startup_cmd); @@ -77,7 +77,7 @@ index 6f041a0d..83c3cd23 100644 static void setcursor(struct wl_listener *listener, void *data); static void setcursorshape(struct wl_listener *listener, void *data); static void setfloating(Client *c, int floating); -@@ -325,6 +328,7 @@ static void setgamma(struct wl_listener *listener, void *data); +@@ -326,6 +329,7 @@ static void setfullscreen(Client *c, int fullscreen); static void setlayout(const Arg *arg); static void setmfact(const Arg *arg); static void setmon(Client *c, Monitor *m, uint32_t newtags); @@ -85,7 +85,7 @@ index 6f041a0d..83c3cd23 100644 static void setpsel(struct wl_listener *listener, void *data); static void setsel(struct wl_listener *listener, void *data); static void setup(void); -@@ -464,6 +468,7 @@ applyrules(Client *c) +@@ -491,6 +495,7 @@ applyrules(Client *c) if ((!r->title || strstr(title, r->title)) && (!r->id || strstr(appid, r->id))) { c->isfloating = r->isfloating; @@ -93,17 +93,18 @@ index 6f041a0d..83c3cd23 100644 newtags |= r->tags; i = 0; wl_list_for_each(m, &mons, link) { -@@ -472,6 +477,7 @@ applyrules(Client *c) +@@ -499,6 +504,8 @@ applyrules(Client *c) } } } -+ wlr_scene_node_for_each_buffer(&c->scene_surface->node, scenebuffersetopacity, c); ++ if (c->scene_surface) ++ wlr_scene_node_for_each_buffer(&c->scene_surface->node, scenebuffersetopacity, c); setmon(c, mon, newtags); } -@@ -773,6 +779,9 @@ commitnotify(struct wl_listener *listener, void *data) - if (client_surface(c)->mapped && c->mon) - resize(c, c->geom, (c->isfloating && !c->isfullscreen)); +@@ -874,6 +881,9 @@ commitnotify(struct wl_listener *listener, void *data) + + resize(c, c->geom, (c->isfloating && !c->isfullscreen)); + if (c->scene_surface) + wlr_scene_node_for_each_buffer(&c->scene_surface->node, scenebuffersetopacity, c); @@ -111,15 +112,15 @@ index 6f041a0d..83c3cd23 100644 /* mark a pending resize as completed */ if (c->resize && c->resize <= c->surface.xdg->current.configure_serial) c->resize = 0; -@@ -1024,6 +1033,7 @@ createnotify(struct wl_listener *listener, void *data) - c = xdg_surface->data = ecalloc(1, sizeof(*c)); - c->surface.xdg = xdg_surface; +@@ -1120,6 +1130,7 @@ createnotify(struct wl_listener *listener, void *data) + c = toplevel->base->data = ecalloc(1, sizeof(*c)); + c->surface.xdg = toplevel->base; c->bw = borderpx; + c->opacity = default_opacity; - wlr_xdg_toplevel_set_wm_capabilities(xdg_surface->toplevel, - WLR_XDG_TOPLEVEL_WM_CAPABILITIES_FULLSCREEN); -@@ -2173,6 +2183,15 @@ run(char *startup_cmd) + LISTEN(&toplevel->base->surface->events.commit, &c->commit, commitnotify); + LISTEN(&toplevel->base->surface->events.map, &c->map, mapnotify); +@@ -2285,6 +2296,15 @@ run(char *startup_cmd) wl_display_run(dpy); } @@ -135,7 +136,7 @@ index 6f041a0d..83c3cd23 100644 void setcursor(struct wl_listener *listener, void *data) { -@@ -2241,6 +2260,7 @@ setfullscreen(Client *c, int fullscreen) +@@ -2353,6 +2373,7 @@ setfullscreen(Client *c, int fullscreen) * client positions are set by the user and cannot be recalculated */ resize(c, c->prev, 0); } @@ -143,7 +144,7 @@ index 6f041a0d..83c3cd23 100644 arrange(c->mon); printstatus(); } -@@ -2308,6 +2328,23 @@ setmon(Client *c, Monitor *m, uint32_t newtags) +@@ -2409,6 +2430,23 @@ setmon(Client *c, Monitor *m, uint32_t newtags) focusclient(focustop(selmon), 1); } @@ -156,10 +157,10 @@ index 6f041a0d..83c3cd23 100644 + + sel->opacity += arg->f; + if (sel->opacity > 1.0) -+ sel->opacity = 1.0; ++ sel->opacity = 1.0f; + + if (sel->opacity < 0.1) -+ sel->opacity = 0.1; ++ sel->opacity = 0.1f; + + wlr_scene_node_for_each_buffer(&sel->scene_surface->node, scenebuffersetopacity, sel); +} @@ -167,14 +168,14 @@ index 6f041a0d..83c3cd23 100644 void setpsel(struct wl_listener *listener, void *data) { -@@ -2997,6 +3034,7 @@ createnotifyx11(struct wl_listener *listener, void *data) +@@ -3120,6 +3158,7 @@ createnotifyx11(struct wl_listener *listener, void *data) c->surface.xwayland = xsurface; c->type = X11; - c->bw = borderpx; + c->bw = client_is_unmanaged(c) ? 0 : borderpx; + c->opacity = default_opacity; /* Listen to the various events it can emit */ LISTEN(&xsurface->events.associate, &c->associate, associatex11); -- -2.45.2 +2.48.0