Xvnc backend : Multi monitor and resize support - neutrinolabs/xrdp GitHub Wiki

Description

The Xvnc backend is used to connect xrdp(8) to VNC servers.

From version v0.9.14 of xrdp, the following features are supported by the Xvnc backend:-

  • multi-monitor (multi-head) support.
  • server resizes requested by the client.

These features will only be available if they are also supported by the VNC server.

Because both features use the same protocol message, a VNC server which supports one of the features will almost certainly support the other one as well.

VNC servers supporting multi-monitor/resize

At the time of writing, the only known VNC server which supports these features is TigerVNC (version 1.3.0 and later).

Resize behaviour

Connecting (or reconnecting) to a VNC server supporting multi-monitor/resize

The VNC server is asked to configure its screen(s) to match the RDP client configuration.

Connecting (or reconnecting) to a VNC server not supporting multi-monitor/resize

Providing the same colour depth is selected, the RDP client is resized to match the VNC server screen. If a different colour depth is used, a new session is created using the different colour depth.

Change in reconnect behaviour

Previous versions of xrdp did not resize the RDP client when connecting to an existing session of a different size. Instead, a different session was initiated. This behaviour was found to be confusing, as it is somewhat different from the Xorg backend behaviour.

Technical notes

Simulating previous behaviour

You cannot simply simulate the old behaviour by using a VNC server which does not support these features.

If you really want to create different sessions for different initial connection sizes, you can change the Policy setting in sesman.ini to UBD - see sesman.ini(5). Be aware that changing this setting will change it for all backends you may be using.

Disabling server resize with TigerVNC

If you are using TigerVNC and you do not wish to have the server resize to the client, you will can set disabled_encodings_mask=1 for the connection in xrdp.ini.

TigerVNC accepts a command-line argument -AcceptSetDesktopSize=0 which should also disable this feature. This is the preferred method, but at the time of writing you need the 1.11 beta version of TigerVNC to use this. See TigerVNC/tigervnc#1036 for technical details

Comments in sesman.ini

Note that the default behaviour for Policy=Default in sesman.ini is effectively different when using the Xvnc backend. If you have an old version of this file, the comment for this setting may be out of date.

References

  • RFC6143 [March 2011] The Remote Framebuffer Protocol
  • RFB community version describes the ExtendedDesktopSize pseudo-encoding and SetDesktopSize message used to implement this feature.