Xpra-org / xpra

Persistent remote applications for X11; screen sharing for X11, MacOS and MSWindows.
https://xpra.org/
GNU General Public License v2.0
1.97k stars 169 forks source link

seamless win32 server #897

Open totaam opened 9 years ago

totaam commented 9 years ago

Issue migrated from trac ticket # 897

component: platforms | priority: major | keywords: win32 shadow seamless

2015-06-25 09:05:17: antoine created the issue


Like it says on the tin. It occurred to me after fixing xshape (#501) and running virtualbox that we can fairly easily do a seamless mode for win32 by sending the list of window geometries as a list of xshape rectangles.

The more tricky part is going to be the screen size issues.. we should resize the "server" screen to the size of the client, which may not be possible. So maybe we have to resort to some sort of clipping.

totaam commented 9 years ago

2015-06-25 09:15:20: antoine changed status from new to assigned

totaam commented 9 years ago

2015-06-25 09:15:20: antoine commented


Partial support added in r9697, the window still has decorations which allows us to avoid the issues with screen sizes. A good start.

Changing the resolution on win32 does not look too hard: Resize display resolution using python with cross platform support, Programatically rotate monitor: help on using EnumDisplaySettings, see msdn: ChangeDisplaySettings

EDIT: this is what this looks like at present when connecting with a trunk Linux client to a trunk win32 server started with:

SET XPRA_WIN32_SEAMLESS=1
xpra_cmd shadow :0 --bind-tcp=0.0.0.0:10000

[[Image(XP-semi-seamless.png)]] (top left is the transparent window holding the same windows as the bottom right window, which is a virtualbox XP virtual machine)

totaam commented 9 years ago

2015-06-26 05:29:29: antoine uploaded file XP-semi-seamless.png (490.0 KiB)

win32 semi-seamless server XP-semi-seamless.png

totaam commented 8 years ago

2016-09-15 05:24:26: antoine commented


Changing video mode using ChangeDisplaySettingsEx (or even just ChangeDisplaySettings) does work, for example this pywin32 code: rotate monitor.

But we can only set existing modes, not create new ones (similar to the limitations we have with Xdummy), and I cannot see a way to tell win32 to ignore part of the screen... so this isn't going to help much.

totaam commented 5 years ago

2019-03-20 05:05:34: antoine commented


Milestone renamed