Certainly, the point was to respect the resize hints though. On 24 Apr. 2017 4:50 pm, "Hiltjo Posthuma" <[email protected]> wrote:
> On Mon, Apr 24, 2017 at 01:35:59PM +1000, Daniel Cousens wrote: > > It has often annoyed me that my `st` windows would have "gaps" beneath > > them and to the right as a result of the size hints not being > respected > > (due to column widths being enforced nicely in `st`)... however, Â the > > annoyance doesn't come from the fact that it happens, Â just the lack > > of symmetry. > > This patch enforces that symmetry by performing a dummy resize loop > > first, Â then using the aggregate remainder, Â it then adds half of > > that remainder as an initial offset, Â leaving symmetric gaps on each > > axis, not just the positive axis'. > > This patch has issues though, Â for whatever reason Chromium doesn't > > like this approach whatsoever, Â and often refuses to resize at all... > > Feedback appreciated; Â and thoughts if this is a better behaviour? > > > From a88d0927d8c64044ea417eea4376c475ec7ecf1c Mon Sep 17 00:00:00 2001 > > From: Daniel Cousens <[email protected]> > > Date: Mon, 24 Apr 2017 13:01:46 +1000 > > Subject: [PATCH] center windows if useless gaps occur > > > > --- > > dwm.c | 37 +++++++++++++++++++++++++++++++++++-- > > 1 file changed, 35 insertions(+), 2 deletions(-) > > > > diff --git a/dwm.c b/dwm.c > > index b452ed7..9baf58b 100644 > > --- a/dwm.c > > +++ b/dwm.c > > @@ -1266,6 +1266,22 @@ resize(Client *c, int x, int y, int w, int h, int > interact) > > } > > > > void > > +dummyresizeclient(Client *c, int x, int y, int w, int h) > > +{ > > + c->x = x; > > + c->y = y; > > + c->w = w; > > + c->h = h; > > +} > > + > > +void > > +dummyresize(Client *c, int x, int y, int w, int h, int interact) > > +{ > > + if (applysizehints(c, &x, &y, &w, &h, interact)) > > + dummyresizeclient(c, x, y, w, h); > > +} > > + > > +void > > resizeclient(Client *c, int x, int y, int w, int h) > > { > > XWindowChanges wc; > > @@ -1667,6 +1683,7 @@ void > > tile(Monitor *m) > > { > > unsigned int i, n, h, mw, my, ty; > > + unsigned int dx = 0; > > Client *c; > > > > for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), > n++); > > @@ -1677,14 +1694,30 @@ tile(Monitor *m) > > mw = m->nmaster ? m->ww * m->mfact : 0; > > else > > mw = m->ww; > > + > > + /* dummy tile, for size hints only */ > > for (i = my = ty = 0, c = nexttiled(m->clients); c; c = > nexttiled(c->next), i++) > > if (i < m->nmaster) { > > h = (m->wh - my) / (MIN(n, m->nmaster) - i); > > - resize(c, m->wx, m->wy + my, mw - (2*c->bw), h - > (2*c->bw), 0); > > + dummyresize(c, m->wx, m->wy + my, mw - (2*c->bw), > h - (2*c->bw), 0); > > my += HEIGHT(c); > > } else { > > h = (m->wh - ty) / (n - i); > > - resize(c, m->wx + mw, m->wy + ty, m->ww - mw - > (2*c->bw), h - (2*c->bw), 0); > > + dummyresize(c, m->wx + mw, m->wy + ty, m->ww - mw > - (2*c->bw), h - (2*c->bw), 0); > > + ty += HEIGHT(c); > > + } > > + > > + my = (m->wh - my) / 2; > > + ty = (m->wh - ty) / 2; > > + > > + for (i = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), > i++) > > + if (i < m->nmaster) { > > + dx = ((mw - (2*c->bw)) - WIDTH(c)) / 2; > > + resize(c, m->wx + dx, m->wy + my, WIDTH(c), > HEIGHT(c), 0); > > + my += HEIGHT(c); > > + } else { > > + dx = ((m->ww - mw - (2*c->bw)) - WIDTH(c)) / 2; > > + resize(c, m->wx + mw + dx, m->wy + ty, WIDTH(c), > HEIGHT(c), 0); > > ty += HEIGHT(c); > > } > > } > > -- > > 2.12.2 > > > > Hey, > > Sorry if I'm missing the point, but have you tried the config option > "resizehints" in dwm? > > (Firefox also has issues with initial window resize, it is a Firefox > bug I think). > > -- > Kind regards, > Hiltjo > >
