autoresize patch
This commit is contained in:
@@ -60,4 +60,5 @@ Most patches can be found on the suckless website: [https://dwm.suckless.org/pat
|
|||||||
* [anybar](https://github.com/mihirlad55/dwm-anybar) (Polybar Tray Fix Version) - Enables dwm to manage external status bars such as lemonbar and polybar
|
* [anybar](https://github.com/mihirlad55/dwm-anybar) (Polybar Tray Fix Version) - Enables dwm to manage external status bars such as lemonbar and polybar
|
||||||
* [aspectresize](https://dwm.suckless.org/patches/aspectresize/) - Allows you to resize a window while maintaining aspect ratio
|
* [aspectresize](https://dwm.suckless.org/patches/aspectresize/) - Allows you to resize a window while maintaining aspect ratio
|
||||||
* [attachbelow](https://dwm.suckless.org/patches/attachbelow/) (Toggleable) - Make new clients attach below the selected client, instead of always becoming the new master
|
* [attachbelow](https://dwm.suckless.org/patches/attachbelow/) (Toggleable) - Make new clients attach below the selected client, instead of always becoming the new master
|
||||||
|
* [autoresize](https://dwm.suckless.org/patches/autoresize/) - Windows that are not visible when requesting a resize/move will get resized/moved
|
||||||
* [fixborders](https://dwm.suckless.org/patches/alpha/) - Make borders opaque
|
* [fixborders](https://dwm.suckless.org/patches/alpha/) - Make borders opaque
|
||||||
|
10
dwm.c
10
dwm.c
@@ -92,7 +92,7 @@ struct Client {
|
|||||||
int basew, baseh, incw, inch, maxw, maxh, minw, minh;
|
int basew, baseh, incw, inch, maxw, maxh, minw, minh;
|
||||||
int bw, oldbw;
|
int bw, oldbw;
|
||||||
unsigned int tags;
|
unsigned int tags;
|
||||||
int isfixed, isfloating, isurgent, neverfocus, oldstate, isfullscreen;
|
int isfixed, isfloating, isurgent, neverfocus, oldstate, isfullscreen, needresize;
|
||||||
Client *next;
|
Client *next;
|
||||||
Client *snext;
|
Client *snext;
|
||||||
Monitor *mon;
|
Monitor *mon;
|
||||||
@@ -672,6 +672,8 @@ configurerequest(XEvent *e)
|
|||||||
configure(c);
|
configure(c);
|
||||||
if (ISVISIBLE(c))
|
if (ISVISIBLE(c))
|
||||||
XMoveResizeWindow(dpy, c->win, c->x, c->y, c->w, c->h);
|
XMoveResizeWindow(dpy, c->win, c->x, c->y, c->w, c->h);
|
||||||
|
else
|
||||||
|
c->needresize = 1;
|
||||||
} else
|
} else
|
||||||
configure(c);
|
configure(c);
|
||||||
} else {
|
} else {
|
||||||
@@ -1760,6 +1762,12 @@ showhide(Client *c)
|
|||||||
if (ISVISIBLE(c)) {
|
if (ISVISIBLE(c)) {
|
||||||
/* show clients top down */
|
/* show clients top down */
|
||||||
XMoveWindow(dpy, c->win, c->x, c->y);
|
XMoveWindow(dpy, c->win, c->x, c->y);
|
||||||
|
if (c->needresize) {
|
||||||
|
c->needresize = 0;
|
||||||
|
XMoveResizeWindow(dpy, c->win, c->x, c->y, c->w, c->h);
|
||||||
|
} else {
|
||||||
|
XMoveWindow(dpy, c->win, c->x, c->y);
|
||||||
|
}
|
||||||
if ((!c->mon->lt[c->mon->sellt]->arrange || c->isfloating) && !c->isfullscreen)
|
if ((!c->mon->lt[c->mon->sellt]->arrange || c->isfloating) && !c->isfullscreen)
|
||||||
resize(c, c->x, c->y, c->w, c->h, 0);
|
resize(c, c->x, c->y, c->w, c->h, 0);
|
||||||
showhide(c->snext);
|
showhide(c->snext);
|
||||||
|
35
patches/dwm-autoresize-6.1.diff
Normal file
35
patches/dwm-autoresize-6.1.diff
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
diff --git a/dwm.c b/dwm.c
|
||||||
|
index 0362114..e4e8514 100644
|
||||||
|
--- a/dwm.c
|
||||||
|
+++ b/dwm.c
|
||||||
|
@@ -92,7 +92,7 @@ struct Client {
|
||||||
|
int basew, baseh, incw, inch, maxw, maxh, minw, minh;
|
||||||
|
int bw, oldbw;
|
||||||
|
unsigned int tags;
|
||||||
|
- int isfixed, isfloating, isurgent, neverfocus, oldstate, isfullscreen;
|
||||||
|
+ int isfixed, isfloating, isurgent, neverfocus, oldstate, isfullscreen, needresize;
|
||||||
|
Client *next;
|
||||||
|
Client *snext;
|
||||||
|
Monitor *mon;
|
||||||
|
@@ -621,6 +621,8 @@ configurerequest(XEvent *e)
|
||||||
|
configure(c);
|
||||||
|
if (ISVISIBLE(c))
|
||||||
|
XMoveResizeWindow(dpy, c->win, c->x, c->y, c->w, c->h);
|
||||||
|
+ else
|
||||||
|
+ c->needresize = 1;
|
||||||
|
} else
|
||||||
|
configure(c);
|
||||||
|
} else {
|
||||||
|
@@ -1611,6 +1613,12 @@ showhide(Client *c)
|
||||||
|
if (ISVISIBLE(c)) {
|
||||||
|
/* show clients top down */
|
||||||
|
XMoveWindow(dpy, c->win, c->x, c->y);
|
||||||
|
+ if (c->needresize) {
|
||||||
|
+ c->needresize = 0;
|
||||||
|
+ XMoveResizeWindow(dpy, c->win, c->x, c->y, c->w, c->h);
|
||||||
|
+ } else {
|
||||||
|
+ XMoveWindow(dpy, c->win, c->x, c->y);
|
||||||
|
+ }
|
||||||
|
if ((!c->mon->lt[c->mon->sellt]->arrange || c->isfloating) && !c->isfullscreen)
|
||||||
|
resize(c, c->x, c->y, c->w, c->h, 0);
|
||||||
|
showhide(c->snext);
|
Reference in New Issue
Block a user