xpra icon
Bug tracker and wiki

Version 2 (modified by Antoine Martin, 4 weeks ago) (diff)



See also wiki/Encodings, which has its own tuning guidelines.


Using the default settings, the system will do its best to accommodate any type of application, no matter what the network conditions are like. Because those heuristics cover a wide range of possibilities, in many cases they may not be optimal (ie: local connections over mmap behave very differently from a remote connection over 3G or wifi: #2037).

It is often possible to obtain better performance and user experience by configuring the system to be better tuned for its environment and user demands.

Some initial pointers:

Application Tuning

The key settings that affect application performance are the ones that allow the server to make the distinction between the window contents that can be compressed with lossy picture formats (images, video) and those that cannot (text and content with sharp lines).

These hints can be specified using configuration files for matching various window attributes(#1950), or matching more global desktop application categories (#1956). Applications can also set a window property directly to override this (#2023).

The hints are used to select the picture encoding most appropriate for the type of content to be compressed (#1952), though applications may choose to bypass this logic and set the picture encoding explicitly (#2086) and / or set the quality and speed directly (#2077). The hints are also used to tune speed / quality / framerate (#2061, #1135), or to disable video mode (#2100).

The hints are also passed on to the picture encoders themselves for their own internal tuning (#1699, #2061, #1257, #800).

Video Region

Video compression offers major bandwidth savings and performance improvements over regular picture compression, but these benefits come at a cost: if the region to encode as video is not detected properly then the non-video areas will suffer from: visual degradation, delays, slow auto-refresh, etc It is therefore essential to correctly detect which part of a window needs to be encoded using video compression. Screen updates using video compression are also the only areas that support AV-sync (#835).

The heuristics will try very hard to identify the video region correctly (#410, #967), using any hints it can use to improve its chances of success (ie: #2113).

But if at all possible, it is best to use an API to set the video region explicitly (#1060, #1401) and to set exclusion zones so we can ignore the window scrollbars (#1295).

See also: #2022, #2094, #1951, #999, #1014, #596