dwm/patches/004-floatrules.diff

65 lines
2.0 KiB
Diff

diff -u dwm/config.def.h dwmnew/config.def.h
--- dwm/config.def.h 2020-03-01 19:10:06.676821764 +1300
+++ dwmnew/config.def.h 2020-03-01 19:29:26.276901430 +1300
@@ -26,9 +26,9 @@
* WM_CLASS(STRING) = instance, class
* WM_NAME(STRING) = title
*/
- /* class instance title tags mask isfloating monitor */
- { "Gimp", NULL, NULL, 0, 1, -1 },
- { "Firefox", NULL, NULL, 1 << 8, 0, -1 },
+ /* class instance title tags mask isfloating monitor float x,y,w,h floatborderpx*/
+ { "Gimp", NULL, NULL, 0, 1, -1, 50,50,500,500, 5 },
+ { "Firefox", NULL, NULL, 1 << 8, 0, -1, 50,50,500,500, 5 },
};
/* layout(s) */
Only in dwmnew: config.h
Only in dwmnew: drw.o
diff -u dwm/dwm.c dwmnew/dwm.c
--- dwm/dwm.c 2020-03-01 19:10:06.680155097 +1300
+++ dwmnew/dwm.c 2020-03-01 19:28:26.793564016 +1300
@@ -93,6 +93,7 @@
int bw, oldbw;
unsigned int tags;
int isfixed, isfloating, isurgent, neverfocus, oldstate, isfullscreen;
+ int floatborderpx;
Client *next;
Client *snext;
Monitor *mon;
@@ -139,6 +140,8 @@
unsigned int tags;
int isfloating;
int monitor;
+ int floatx, floaty, floatw, floath;
+ int floatborderpx;
} Rule;
/* function declarations */
@@ -299,6 +302,13 @@
{
c->isfloating = r->isfloating;
c->tags |= r->tags;
+ c->floatborderpx = r->floatborderpx;
+ if (r->isfloating) {
+ c->x = r->floatx;
+ c->y = r->floaty;
+ c->w = r->floatw;
+ c->h = r->floath;
+ }
for (m = mons; m && m->num != r->monitor; m = m->next);
if (m)
c->mon = m;
@@ -1281,7 +1291,10 @@
c->oldy = c->y; c->y = wc.y = y;
c->oldw = c->w; c->w = wc.width = w;
c->oldh = c->h; c->h = wc.height = h;
- wc.border_width = c->bw;
+ if (c->isfloating)
+ wc.border_width = c->floatborderpx;
+ else
+ wc.border_width = c->bw;
XConfigureWindow(dpy, c->win, CWX|CWY|CWWidth|CWHeight|CWBorderWidth, &wc);
configure(c);
XSync(dpy, False);