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

Note: This page describes a feature currently in the development branch of XRDP.

Description

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

From version v0.x.y 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

VNC servers supporitng multi-monitor

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

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

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 to most users.

Technical notes

Simulating previous behaviour

The previous version of XRDP, where different sessions are created for different initial connection sizes can be approached by changing the Policy setting in sesman.ini - see sesman.ini(5).

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 probably to 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 a development version of TigerVNC to use this. See TigerVNC/tigervnc#1036 for technical details

References

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