diff --git a/patches/customfloat/README.md b/patches/customfloat/README.md index 9f2bda5..9afdc5f 100644 --- a/patches/customfloat/README.md +++ b/patches/customfloat/README.md @@ -15,6 +15,7 @@ The "Monitor area" refers to the space enclosed by the green rectangle, while th ### Download - [git branch](https://codeberg.org/wochap/dwl/src/branch/v0.5/customfloat) +- [2025-08-16[(https://codeberg.org/dwl/dwl-patches/raw/commit/f7f47b6d99cf1bcf35f614ce7beed7f283967f57/patches/customfloat/customfloat.patch) - [2024-07-09](https://codeberg.org/dwl/dwl-patches/raw/commit/13d96b51b54500dd24544cf3a73c61b7a1414bc6/patches/customfloat/customfloat.patch) - [2024-04-11](https://codeberg.org/dwl/dwl-patches/raw/commit/98cba933c9f4099202e54f39acbf17e05bde828a/customfloat/customfloat.patch) - [v0.5](https://codeberg.org/dwl/dwl-patches/raw/commit/bf098459219e7a473d8edb4c0435aeb6a4b82e38/customfloat/customfloat.patch) diff --git a/patches/customfloat/customfloat.patch b/patches/customfloat/customfloat.patch index d295571..2c3d1b3 100644 --- a/patches/customfloat/customfloat.patch +++ b/patches/customfloat/customfloat.patch @@ -1,21 +1,21 @@ -From 4f19f5499610d56f2616da5d44039403ac9d4c06 Mon Sep 17 00:00:00 2001 -From: wochap -Date: Tue, 9 Jul 2024 10:52:37 -0500 -Subject: [PATCH] implement customfloat and generate patches +From b9ec52a0dfdb4314070831b2aa7fc65177ebc2ad Mon Sep 17 00:00:00 2001 +From: A Frederick Christensen +Date: Sat, 16 Aug 2025 15:08:39 -0500 +Subject: [PATCH] customfloat-patch --- config.def.h | 7 ++++--- - dwl.c | 27 +++++++++++++++++++++++++++ - 2 files changed, 31 insertions(+), 3 deletions(-) + dwl.c | 26 ++++++++++++++++++++++++++ + 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/config.def.h b/config.def.h -index 22d2171..dee53f4 100644 +index 95c2afa..67b27ed 100644 --- a/config.def.h +++ b/config.def.h @@ -13,6 +13,7 @@ static const float focuscolor[] = COLOR(0x005577ff); static const float urgentcolor[] = COLOR(0xff0000ff); /* This conforms to the xdg-protocol. Set the alpha to zero to restore the old behavior */ - static const float fullscreen_bg[] = {0.1f, 0.1f, 0.1f, 1.0f}; /* You can also use glsl colors */ + static const float fullscreen_bg[] = {0.0f, 0.0f, 0.0f, 1.0f}; /* You can also use glsl colors */ +static const int respect_monitor_reserved_area = 0; /* 1 to monitor center while respecting the monitor's reserved area, 0 to monitor center */ /* tagging - TAGCOUNT must be no greater than 31 */ @@ -29,16 +29,16 @@ index 22d2171..dee53f4 100644 /* examples: */ - { "Gimp_EXAMPLE", NULL, 0, 1, -1 }, /* Start on currently visible tags floating, not tiled */ - { "firefox_EXAMPLE", NULL, 1 << 8, 0, -1 }, /* Start on ONLY tag "9" */ -+ { "Gimp_EXAMPLE", NULL, 0, 1, -1, 0, 0, 1000, 0.75 }, /* Start on currently visible tags floating, not tiled */ -+ { "firefox_EXAMPLE", NULL, 1 << 8, 0, -1, 0, 0, 0, 0 },/* Start on ONLY tag "9" */ ++ { "Gimp_EXAMPLE", NULL, 0, 1, -1, -1, -1, 1000, 0.75 }, /* Start on currently visible tags floating, not tiled */ ++ { "firefox_EXAMPLE", NULL, 1 << 8, 0, -1, -1, -1, -1, -1 }, /* Start on ONLY tag "9" */ }; /* layout(s) */ diff --git a/dwl.c b/dwl.c -index dc0437e..be0340f 100644 +index 12f441e..e364621 100644 --- a/dwl.c +++ b/dwl.c -@@ -230,6 +230,10 @@ typedef struct { +@@ -228,6 +228,10 @@ typedef struct { uint32_t tags; int isfloating; int monitor; @@ -49,7 +49,7 @@ index dc0437e..be0340f 100644 } Rule; typedef struct { -@@ -454,6 +458,11 @@ applyrules(Client *c) +@@ -482,6 +486,11 @@ applyrules(Client *c) int i; const Rule *r; Monitor *mon = selmon, *m; @@ -59,35 +59,38 @@ index dc0437e..be0340f 100644 + int newy; + int apply_resize = 0; - c->isfloating = client_is_float_type(c); - if (!(appid = client_get_appid(c))) -@@ -471,9 +480,27 @@ applyrules(Client *c) + appid = client_get_appid(c); + title = client_get_title(c); +@@ -495,12 +504,29 @@ applyrules(Client *c) + wl_list_for_each(m, &mons, link) { if (r->monitor == i++) mon = m; ++ if (c->isfloating || !mon->lt[mon->sellt]->arrange) { ++ /* client is floating or in floating layout */ ++ struct wlr_box b = respect_monitor_reserved_area ? mon->w : mon->m; ++ newwidth = (int)round((r->w >= 0) ? (r->w <= 1 ? b.width * r->w : r->w) : c->geom.width); ++ newheight = (int)round((r->h >= 0) ? (r->h <= 1 ? b.height * r->h : r->h) : c->geom.height); ++ newx = (int)round((r->x >= 0) ? (r->x <= 1 ? b.width * r->x + b.x : r->x + b.x) : c->geom.x); ++ newy = (int)round((r->y >= 0) ? (r->y <= 1 ? b.height * r->y + b.y : r->y + b.y) : c->geom.y); ++ apply_resize = 1; ++ } } -+ if (c->isfloating || !mon->lt[mon->sellt]->arrange) { -+ /* client is floating or in floating layout */ -+ struct wlr_box b = respect_monitor_reserved_area ? mon->w : mon->m; -+ newwidth = (int)round(r->w ? (r->w <= 1 ? b.width * r->w : r->w) : c->geom.width); -+ newheight = (int)round(r->h ? (r->h <= 1 ? b.height * r->h : r->h) : c->geom.height); -+ newx = (int)round(r->x ? (r->x <= 1 ? b.width * r->x + b.x : r->x + b.x) : c->geom.x); -+ newy = (int)round(r->y ? (r->y <= 1 ? b.height * r->y + b.y : r->y + b.y) : c->geom.y); -+ apply_resize = 1; -+ -+ } } } + + c->isfloating |= client_is_float_type(c); setmon(c, mon, newtags); + if (apply_resize) { + resize(c, (struct wlr_box){ -+ .x = newx, -+ .y = newy, -+ .width = newwidth, -+ .height = newheight, ++ .x = newx, ++ .y = newy, ++ .width = newwidth, ++ .height = newheight, + }, 1); + } } void -- -2.45.1 +2.50.1 +