diff --git a/patches/customfloat/README.md b/patches/customfloat/README.md index 34959de..568f3bc 100644 --- a/patches/customfloat/README.md +++ b/patches/customfloat/README.md @@ -15,10 +15,8 @@ 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/branch/main/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) +- [wlroots-next-f4249db](https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/customfloat/customfloat-wlroots-next-f4249db.patch) +- [0.8](https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/customfloat/customfloat-wlroots-0.8.patch) ### Authors - [fauxmight](https://codeberg.org/fauxmight) diff --git a/patches/customfloat/customfloat.patch b/patches/customfloat/customfloat-0.8.patch similarity index 87% rename from patches/customfloat/customfloat.patch rename to patches/customfloat/customfloat-0.8.patch index 73c1279..6f760d1 100644 --- a/patches/customfloat/customfloat.patch +++ b/patches/customfloat/customfloat-0.8.patch @@ -1,7 +1,7 @@ -From 83ce30cdfeebcc7569fbb30014db8d1758df79bd Mon Sep 17 00:00:00 2001 +From 96125a70b7525740a42803f1faa666ca37b9433f Mon Sep 17 00:00:00 2001 From: A Frederick Christensen -Date: Thu, 25 Dec 2025 18:44:07 -0600 -Subject: [PATCH] Add: customfloat patch +Date: Mon, 23 Feb 2026 09:06:33 -0600 +Subject: [PATCH] Apply customfloat patch --- config.def.h | 7 ++++--- @@ -9,7 +9,7 @@ Subject: [PATCH] Add: customfloat patch 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/config.def.h b/config.def.h -index 95c2afa..67b27ed 100644 +index 8a6eda0..16afbb3 100644 --- a/config.def.h +++ b/config.def.h @@ -13,6 +13,7 @@ static const float focuscolor[] = COLOR(0x005577ff); @@ -20,22 +20,21 @@ index 95c2afa..67b27ed 100644 /* tagging - TAGCOUNT must be no greater than 31 */ #define TAGCOUNT (9) -@@ -22,10 +23,10 @@ static int log_level = WLR_ERROR; +@@ -21,9 +22,9 @@ static const float fullscreen_bg[] = {0.0f, 0.0f, 0.0f, 1.0f}; /* You ca + 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 monitor x y width height */ - /* 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" */ ++ /* app_id title tags mask isfloating monitor x y width height */ + { "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" */ + /* default/example rule: can be changed but cannot be eliminated; at least one rule must exist */ }; - /* layout(s) */ diff --git a/dwl.c b/dwl.c -index 12f441e..e364621 100644 +index 44f3ad9..801696a 100644 --- a/dwl.c +++ b/dwl.c @@ -228,6 +228,10 @@ typedef struct { @@ -92,5 +91,5 @@ index 12f441e..e364621 100644 void -- -2.51.2 +2.52.0 diff --git a/patches/customfloat/customfloat-wlroots-next-f4249db.patch b/patches/customfloat/customfloat-wlroots-next-f4249db.patch new file mode 100644 index 0000000..11ba1d5 --- /dev/null +++ b/patches/customfloat/customfloat-wlroots-next-f4249db.patch @@ -0,0 +1,95 @@ +From d8a861b30bf93554633ff0517d5bbdcb9b9614f0 Mon Sep 17 00:00:00 2001 +From: A Frederick Christensen +Date: Mon, 23 Feb 2026 09:18:07 -0600 +Subject: [PATCH] Apply customfloat patch + +--- + config.def.h | 7 ++++--- + dwl.c | 26 ++++++++++++++++++++++++++ + 2 files changed, 30 insertions(+), 3 deletions(-) + +diff --git a/config.def.h b/config.def.h +index 8a6eda0..16afbb3 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.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 */ + #define TAGCOUNT (9) +@@ -21,9 +22,9 @@ static const float fullscreen_bg[] = {0.0f, 0.0f, 0.0f, 1.0f}; /* You ca + static int log_level = WLR_ERROR; + + static const Rule rules[] = { +- /* app_id title tags mask isfloating monitor */ +- { "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" */ ++ /* app_id title tags mask isfloating monitor x y width height */ ++ { "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" */ + /* default/example rule: can be changed but cannot be eliminated; at least one rule must exist */ + }; + +diff --git a/dwl.c b/dwl.c +index 8a9715d..7de0655 100644 +--- a/dwl.c ++++ b/dwl.c +@@ -230,6 +230,10 @@ typedef struct { + uint32_t tags; + int isfloating; + int monitor; ++ int x; ++ int y; ++ float w; ++ float h; + } Rule; + + typedef struct { +@@ -484,6 +488,11 @@ applyrules(Client *c) + int i; + const Rule *r; + Monitor *mon = selmon, *m; ++ int newwidth; ++ int newheight; ++ int newx; ++ int newy; ++ int apply_resize = 0; + + appid = client_get_appid(c); + title = client_get_title(c); +@@ -497,12 +506,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; ++ } + } + } + } + + 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, ++ }, 1); ++ } + } + + void +-- +2.52.0 +