summaryrefslogtreecommitdiffstats
path: root/dwl-patches/patches/customfloat
diff options
context:
space:
mode:
authorLeonard Kugis <leonard@kug.is>2025-05-23 11:41:09 +0000
committerLeonard Kugis <leonard@kug.is>2025-05-23 11:41:09 +0000
commitc70505d7c7b7b48600f273357694b56ccf5d2a15 (patch)
tree21c27ac6ffced8d6d904e35bdb39baa5d685d829 /dwl-patches/patches/customfloat
downloaddotfiles-c70505d7c7b7b48600f273357694b56ccf5d2a15.tar.gz
dotfiles-c70505d7c7b7b48600f273357694b56ccf5d2a15.tar.bz2
dotfiles-c70505d7c7b7b48600f273357694b56ccf5d2a15.zip
Initial commitHEADmaster
Diffstat (limited to 'dwl-patches/patches/customfloat')
-rw-r--r--dwl-patches/patches/customfloat/README.md24
-rw-r--r--dwl-patches/patches/customfloat/customfloat.patch93
2 files changed, 117 insertions, 0 deletions
diff --git a/dwl-patches/patches/customfloat/README.md b/dwl-patches/patches/customfloat/README.md
new file mode 100644
index 0000000..9f2bda5
--- /dev/null
+++ b/dwl-patches/patches/customfloat/README.md
@@ -0,0 +1,24 @@
+### Description
+Rules for floating windows support default x, y, width, height. Defaults to the center of the screen and the client size.
+
+If the width or height is less than or equal to 1, then the value will be interpreted as a percentage. For example, 0.5 represents 50%, 0.25 represents 25%, and 1 represents 100%. **NOTE**: Some clients, like Thunar, have minimum width/height
+
+The variable `center_relative_to_monitor` allows the user to choose whether to center relative to the monitor or relative to the window area.
+
+<details>
+<summary>Explanation of center_relative_to_monitor:</summary>
+<pre>
+The "Monitor area" refers to the space enclosed by the green rectangle, while the "Window area" refers to the space enclosed by the red rectangle.
+<img src="https://i.imgur.com/xhejzPh.png"/>
+</pre>
+</details>
+
+### Download
+- [git branch](https://codeberg.org/wochap/dwl/src/branch/v0.5/customfloat)
+- [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)
+
+### Authors
+- [wochap](https://codeberg.org/wochap)
+- [Stivvo](https://github.com/Stivvo)
diff --git a/dwl-patches/patches/customfloat/customfloat.patch b/dwl-patches/patches/customfloat/customfloat.patch
new file mode 100644
index 0000000..d295571
--- /dev/null
+++ b/dwl-patches/patches/customfloat/customfloat.patch
@@ -0,0 +1,93 @@
+From 4f19f5499610d56f2616da5d44039403ac9d4c06 Mon Sep 17 00:00:00 2001
+From: wochap <gean.marroquin@gmail.com>
+Date: Tue, 9 Jul 2024 10:52:37 -0500
+Subject: [PATCH] implement customfloat and generate patches
+
+---
+ config.def.h | 7 ++++---
+ dwl.c | 27 +++++++++++++++++++++++++++
+ 2 files changed, 31 insertions(+), 3 deletions(-)
+
+diff --git a/config.def.h b/config.def.h
+index 22d2171..dee53f4 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 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)
+@@ -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 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" */
++ { "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" */
+ };
+
+ /* layout(s) */
+diff --git a/dwl.c b/dwl.c
+index dc0437e..be0340f 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 {
+@@ -454,6 +458,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;
+
+ c->isfloating = client_is_float_type(c);
+ if (!(appid = client_get_appid(c)))
+@@ -471,9 +480,27 @@ applyrules(Client *c)
+ 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 ? (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;
++
++ }
+ }
+ }
+ setmon(c, mon, newtags);
++ if (apply_resize) {
++ resize(c, (struct wlr_box){
++ .x = newx,
++ .y = newy,
++ .width = newwidth,
++ .height = newheight,
++ }, 1);
++ }
+ }
+
+ void
+--
+2.45.1