Make floating windows spawn within the monitor's window area - dwm - dynamic wi… | |
git clone git://git.suckless.org/dwm | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 44adafe0069e73aa03a3829d7bb39591cd8b3f1d | |
parent a859676ead17017bbe81b4989b2f2e0b00a0b4ba | |
Author: Stein <[email protected]> | |
Date: Thu, 11 Aug 2022 11:15:55 +0200 | |
Make floating windows spawn within the monitor's window area | |
This is a follow-up on this thread: | |
https://lists.suckless.org/hackers/2208/18462.html | |
The orginal code had constraints such that if a window's starting | |
attributes (position and size) were to place the window outside of | |
the edges of the monitor, then the window would be moved into view | |
at the closest monitor edge. | |
There was an exception to this where if a top bar is used then the | |
window should not obscure the bar if present, which meant to place | |
the window within the window area instead. | |
The proposed change here makes it the general rule that floating | |
windows should spawn within the window area rather than within the | |
monitor area. This makes it simple and consistent with no | |
exceptions and it makes the intention of the code clear. | |
This has the benefit of making the behaviour consistent regardless | |
of whether the user is using a top bar or a bottom bar. | |
Additionally this will have an effect on patches that modify the | |
size of the window area. For example if the insets patch is used to | |
reserve space on the left hand side of the monitor for a dock or a | |
vertical bar then new floating clients will not obscure that area. | |
Diffstat: | |
M dwm.c | 10 +++++----- | |
1 file changed, 5 insertions(+), 5 deletions(-) | |
--- | |
diff --git a/dwm.c b/dwm.c | |
@@ -1044,11 +1044,11 @@ manage(Window w, XWindowAttributes *wa) | |
applyrules(c); | |
} | |
- if (c->x + WIDTH(c) > c->mon->mx + c->mon->mw) | |
- c->x = c->mon->mx + c->mon->mw - WIDTH(c); | |
- if (c->y + HEIGHT(c) > c->mon->my + c->mon->mh) | |
- c->y = c->mon->my + c->mon->mh - HEIGHT(c); | |
- c->x = MAX(c->x, c->mon->mx); | |
+ if (c->x + WIDTH(c) > c->mon->wx + c->mon->ww) | |
+ c->x = c->mon->wx + c->mon->ww - WIDTH(c); | |
+ if (c->y + HEIGHT(c) > c->mon->wy + c->mon->wh) | |
+ c->y = c->mon->wy + c->mon->wh - HEIGHT(c); | |
+ c->x = MAX(c->x, c->mon->wx); | |
c->y = MAX(c->y, c->mon->wy); | |
c->bw = borderpx; | |