diff options
author | Leonard Kugis <leonard@kug.is> | 2025-05-23 11:41:09 +0000 |
---|---|---|
committer | Leonard Kugis <leonard@kug.is> | 2025-05-23 11:41:09 +0000 |
commit | c70505d7c7b7b48600f273357694b56ccf5d2a15 (patch) | |
tree | 21c27ac6ffced8d6d904e35bdb39baa5d685d829 /dwl-patches/patches/customfloat | |
download | dotfiles-c70505d7c7b7b48600f273357694b56ccf5d2a15.tar.gz dotfiles-c70505d7c7b7b48600f273357694b56ccf5d2a15.tar.bz2 dotfiles-c70505d7c7b7b48600f273357694b56ccf5d2a15.zip |
Diffstat (limited to 'dwl-patches/patches/customfloat')
-rw-r--r-- | dwl-patches/patches/customfloat/README.md | 24 | ||||
-rw-r--r-- | dwl-patches/patches/customfloat/customfloat.patch | 93 |
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 |