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 = c->mon->mx + 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);