On Mon, Dec 28, 2015 at 08:10:49AM +0100, Matthieu Herrb wrote: > On Sun, Dec 27, 2015 at 08:28:36PM +0100, Alexander Hall wrote: > > Hi, > > > > Recently, my window manager (i3) started making the ssh-askpass windows > > too small to be really usable. The problem seems to be that the size > > hints indicate that it provides a width and height, while those fields > > are set to 0. While looking at this, the same seems to be the case for > > position (x and y are 0). AFAICS, both of these hints are obsolete. > > x y width and height are marked obsolete because the values are taken > from the window parameters passed to XCreateWindow and not from here. > > But the hints themselve are not obsolete. I would rather investigate > why i3 behaves wrong than just removing the placement and size hints. > > It seems to me that it can come from different reasons (I don't use > i3 so I've not taken the time to look at its code): > > - it incorrectly tries to use the obsolete values, rather than the > window parameters > > - it completely dropped the implementation of the "old" ICCCM > hints and only follows the extened wm hints. Since ssh-askpass > doesn't handle those it gets random values... > > - the computed window parameters are either wrong or interpreted > wrong. This can be the case with Xinerama or pseudo-xinerama when > both ssh-ask pass and the window manager are trying to center the > window on a given monitor rather than having it centered globally > (where it will end up being split across 2 monitors if they are of > equal size). > > > > > The diff below (even without the PPosition removal, but I added that > > for good measure) fixes this, at least for i3. > > I would rather not remove those hints, even if other window manager > seem to behave correctly. Maybe it's needed to pass the correct values > for the obsolete fields. (ihmo it's still an i3 problem in that case, > but it's a more acceptable workaround). ie set them from the d->w3.w > structure.
Thanks a lot for the detailed answer. This is obviously not the right fix. I previously tried adding those fields and that helped too IIRC. I'll have a look at the i3 sources. /Alexander > > Also if someone is interested, support for ewmh compliant window > managers could be added to ssh-askpass. It may help with complex > multi-monitor layouts. > > > > > Should this rather be taken upstream, if any, if it's not already > > there, in which case it might already be fixed? > > Upstream is no longer maintained as far as I know. > > > > > Anyway, the diff follows. Please test on your favourite window manager. > > > > OK? Comments? > > > > /Alexander > > > > > > Index: x11-ssh-askpass.c > > =================================================================== > > RCS file: /cvs/xenocara/app/ssh-askpass/x11-ssh-askpass.c,v > > retrieving revision 1.6 > > diff -u -p -r1.6 x11-ssh-askpass.c > > --- x11-ssh-askpass.c 24 Apr 2015 02:19:41 -0000 1.6 > > +++ x11-ssh-askpass.c 27 Dec 2015 18:52:55 -0000 > > @@ -772,8 +772,6 @@ void createDialogWindow(AppInfo *app) > > outOfMemory(app, __LINE__); > > } > > d->sizeHints->flags = 0; > > - d->sizeHints->flags |= PPosition; > > - d->sizeHints->flags |= PSize; > > d->sizeHints->min_width = d->w3.w.width; > > d->sizeHints->min_height = d->w3.w.height; > > d->sizeHints->flags |= PMinSize; > > > Index: x11-ssh-askpass.c > > =================================================================== > > RCS file: /cvs/xenocara/app/ssh-askpass/x11-ssh-askpass.c,v > > retrieving revision 1.6 > > diff -u -p -r1.6 x11-ssh-askpass.c > > --- x11-ssh-askpass.c 24 Apr 2015 02:19:41 -0000 1.6 > > +++ x11-ssh-askpass.c 27 Dec 2015 18:52:55 -0000 > > @@ -772,8 +772,6 @@ void createDialogWindow(AppInfo *app) > > outOfMemory(app, __LINE__); > > } > > d->sizeHints->flags = 0; > > - d->sizeHints->flags |= PPosition; > > - d->sizeHints->flags |= PSize; > > d->sizeHints->min_width = d->w3.w.width; > > d->sizeHints->min_height = d->w3.w.height; > > d->sizeHints->flags |= PMinSize; > > > -- > Matthieu Herrb
