Package: x2goclient Severity: important Version: 4.0.4.0 Hi Uli, hi Alex, I turn this discussion into a bug report against X2Go Client. Short summary for Alex: Ulrich has completely revisited [2] Xinerama in nx-libs recently for the 3.6.x branch of nx-libs [1]. The complete Xinerama code has been rewritten and moved mainly into the hw/nxagent/Screen.c file, so that we can soon drop your patched libNX_Xinerama.so library and all that LD_LIBRARY_PATH stuff from x2goruncommand. With Ulrichs work, the hacky part in X2Go Client of writing and continuously updating a xinerama.conf file server-side from the client-side becomes obsolete and should only be kepts as legacy code for cases where X2Go Client talks to nxagent servers << 3.6. I'd also appreciate it if you could give feedback on the below question. Thanks, Mike [1] https://github.com/ArcticaProject/nx-libs [2] https://github.com/ArcticaProject/nx-libs/pull/23 On Do 14 Mai 2015 23:32:03 CEST, Ulrich Sibiller wrote: > while testing my xinerama re-implementation I noticed that x2goclient > reports a wrong width sometimes when simply moving the window without > changing the size. The reported size differs by one pixel (too much > or too little). When running x2goclient --debug you can see this: > > x2go-DEBUG-../src/onmainwindow.cpp:10160> "New proxy geometry: (x: > 329, y: 214, w: 1440, h: 900" > x2go-DEBUG-../src/onmainwindow.cpp:10160> "New proxy geometry: (x: > 365, y: 213, w: 1440, h: 900" > x2go-DEBUG-../src/onmainwindow.cpp:10160> "New proxy geometry: (x: > 825, y: 190, w: 1440, h: 900" > x2go-DEBUG-../src/sshprocess.cpp:189> executing remote command via > SshProcess object (24): "export DISPLAY=:50;printf '\''1095 0 345 > 900\n0 0 1095 900'\'' > > $HOME/.x2go/C-uli-50-1431636769_stDKDE_dp24/xinerama.conf" > > -> here the 345 should have been a 344. > > Interestingly my patched x2goagent (that completely ignores > xinerama.conf) sees that value. So I conclude that x2goclient is > manipulating the nxproxy window size by one pixel itself. Disabling > xinerama in the session's configuration fixes the problem. > > That off-by-one behaviour is caused by this code in onmainwindow.cpp: > > void ONMainWindow::slotXineramaConfigured() > { > if (resumingSession.fullscreen) > return; > if (xinSizeInc == -1) > xinSizeInc=1; > else > xinSizeInc=-1; > #ifdef Q_OS_LINUX > lastDisplayGeometry.setWidth(lastDisplayGeometry.width()+xinSizeInc); > XSync(QX11Info::display(),false); > XResizeWindow(QX11Info::display(), proxyWinId, > lastDisplayGeometry.width(),lastDisplayGeometry.height()); > XSync(QX11Info::display(),false); > #endif > #ifdef Q_OS_WIN > QRect geom; > wapiWindowRect ( (HWND) proxyWinId, geom ); > wapiMoveWindow( (HWND) proxyWinId, geom.x(), geom.y(), > geom.width()+xinSizeInc, geom.height(),true); > lastDisplayGeometry=proxyWinGeometry(); > #endif > xineramaTimer->start(500); > } > > If I set xinSizeInc to zero in all cases the off-by-one behaviour is > completely gone. Why does xinSizeInc exist at all? -- DAS-NETZWERKTEAM mike gabriel, herweg 7, 24357 fleckeby fon: +49 (1520) 1976 148 GnuPG Key ID 0x25771B31 mail: mike.gabriel@das-netzwerkteam.de, http://das-netzwerkteam.de freeBusy: https://mail.das-netzwerkteam.de/freebusy/m.gabriel%40das-netzwerkteam.de.xfb