Hi and best wishes for 2010, When running on a mutliheaded display, either with Xinerama or with XRandr, there's no warranty that the Xinerama pseudo screen 0 will be in (0,0). It can be at any offset. Currently ssh-askpass assumes that screen 0 is always at (0,0).
If all your monitors have the same pixel size, the only effect of this is that ssh-askpass will always appear on the leftmost one. I have a smaller monitor on the left, and whithout the attached patch, ssh-askpass appears at a strange position on it. This patch makes ssh-askpass appear at the expected position on the pseudo screen 0. There's still a problem with the resolution computation in the case of XRandR. it will have to be fixed by making ssh-askpass XRandR aware. ok? Index: x11-ssh-askpass.c =================================================================== RCS file: /cvs/OpenBSD/xenocara/app/ssh-askpass/x11-ssh-askpass.c,v retrieving revision 1.4 diff -u -p -u -r1.4 x11-ssh-askpass.c --- x11-ssh-askpass.c 14 Jun 2008 01:05:04 -0000 1.4 +++ x11-ssh-askpass.c 1 Jan 2010 13:11:39 -0000 @@ -698,8 +698,8 @@ void createDialog(AppInfo *app) calcButtonLabelPosition(&(d->okButton)); calcButtonLabelPosition(&(d->cancelButton)); - d->w3.w.x = (app->screen_width - d->w3.w.width) / 2; - d->w3.w.y = (app->screen_height - d->w3.w.height) / 3; + d->w3.w.x = app->screen_xoffset + (app->screen_width - d->w3.w.width) / 2; + d->w3.w.y = app->screen_yoffset + (app->screen_height - d->w3.w.height) / 3; app->dialog = d; } @@ -1504,11 +1504,15 @@ int main(int argc, char **argv) app.screen_width = WidthOfScreen(app.screen); app.screen_height = HeightOfScreen(app.screen); + app.screen_xoffset = 0; + app.screen_yoffset = 0; if (XineramaIsActive(app.dpy) && (screens = XineramaQueryScreens(app.dpy, &nscreens)) != NULL && nscreens) { app.screen_width = screens[0].width; app.screen_height = screens[0].height; + app.screen_xoffset = screens[0].x_org; + app.screen_yoffset = screens[0].y_org; XFree(screens); } Index: x11-ssh-askpass.h =================================================================== RCS file: /cvs/OpenBSD/xenocara/app/ssh-askpass/x11-ssh-askpass.h,v retrieving revision 1.3 diff -u -p -u -r1.3 x11-ssh-askpass.h --- x11-ssh-askpass.h 14 Jun 2008 01:05:04 -0000 1.3 +++ x11-ssh-askpass.h 1 Jan 2010 13:11:39 -0000 @@ -160,6 +160,8 @@ typedef struct Screen *screen; long screen_width; long screen_height; + long screen_xoffset; + long screen_yoffset; Window rootWindow; Pixel black; Pixel white; -- Matthieu Herrb