xpra icon
Bug tracker and wiki

Version 35 (modified by Antoine Martin, 4 years ago) (diff)



Xpra News


2.0 Important Features

This release finally drops compatibility with many outdated libraries and Operating Systems so we can streamline the code, use newer technologies and better prepare for the future. The following systems are no longer supported:

  • Windows XP and Vista: you must use the "legacy" builds (see here)
  • Mac OSX builds now require a 64-bit system, version 10.9 (aka Mavericks) or newer
  • Debian Squeeze and Wheezy; Ubuntu Precise and Trusty; centos 6.x, 7.0 and 7.1
  • Python 2.6 and older, Python 2.7 versions lacking ssl.SSLContext
  • GStreamer 0.10: now using 1.x series
  • pycrypto: superseded by python-cryptography
  • Pillow versions older than 3.0
  • PyOpenGL versions older than 3.1

The following codecs have also been removed:

  • csc_opencl: rarely used and known to cause problems with some icd configurations
  • csc_cython and csc_opencv: too slow
  • webp: version conflicts, performance issues with some versions
  • xvid: unused

Actual new features:

  • 64-bit builds for MS Windows (#678) and MacOSX (#840)
  • MS Windows MSYS2 based build system with fully up to date libraries (#678)
  • MS Windows full support for named-pipe connections (#1174)
  • MS Windows and MacOSX support for mmap transfers (#1004)
  • more configurable mmap options to support KVM's ivshmem (#1387)
  • faster HTML5 client, now packaged separately (RPM only #1372)
  • clipboard synchronization support for the HTML5 client (#1461)
  • faster window scrolling detection, bandwidth savings (#1426)
  • support more screen bit depths: 8, 16, 24, 30 and 32 - see wiki/ImageDepth
  • support 10-bit per pixel rendering with the OpenGL client backend (#1309)
  • improved keyboard mapping support when sharing sessions (#1373)
  • faster native turbojpeg codec (#1423)
  • OpenGL enabled by default on more chipsets, with better driver sanity checks (#1367)
  • better handling of tablet input devices (Mac OSX #1157, HTML5 client #1424)
  • synchronize Xkb layout group (#1380)
  • support stronger HMAC authentication digest modes (r14790)
  • unit tests are now executed automatically on more platforms (Mac OSX r14871, MS Windows: r14870, #847)
  • fix python-lz4 0.9.0 API breakage (#1464)
  • fix html5 visual corruption with scroll paint packets (#1432)


1.0 Important Features

The 1.0 LTS release is here at last!

Here's a list of the most prominent features:

  • SSL socket support #1252, documentation and examples here: wiki/Encryption/SSL, supported in the launcher
  • we've been assigned the default port 14500 by IANA: #731, so the TCP port is now optional ie: xpra attach tcp:hostname
  • run a system-wide proxy server service (#1335) on our default port, using system authentication
  • MS Windows users can start a shadow server from the start menu, which is also accessible via http
  • MSI installer for unattended MS Windows installations: r14252
  • list all local network sessions exposed via mdns using xpra list-mdns #1332
  • the proxy servers can start new sessions on demand: #1319
  • much faster websocket / http server for the HTML5 client: #1252, with SSL support: #1213, MS Windows and Mac OS X server support: #1211
  • much improved HTML client: #1341, including support for native video decoding in #1107
  • VNC-like desktop support: #1206 + #1247 ie: xpra start-desktop --start-child=fluxbox --exit-with-children
  • pointer grabs using Shift+Menu #1229, keyboard grabs using Control+Menu #1195
  • window scrolling detection for much faster compression: #1232
  • server-side support for 10-bit colours: #909
  • better automatic encoding selection and video tuning: #1257, #1135, #1014, support H264 b-frames: #800
  • file transfer improvements: #1026
  • SSH password input support on all platforms in launcher: #1240
  • client applications can trigger window move and resize with MS Windows and Mac OS X clients: #772 (ie: google chrome requires this)
  • geometry handling improvements, multi-monitor #1284, fullscreen: #1327
  • drag and drop support between application windows: #770
  • colour management synchronisation: #1086 (and DPI, workspace, etc)
  • the configuration file is now split into multiple logical parts, see /etc/xpra/conf.d: #1254
  • more configuration options for printers: #1325
  • clipboard direction restrictions: #276
  • webcam improvements: better framerate, device selection menu #1113
  • audio codec improvements: #1196, #1204, #1227, new codecs: #1212, mpeg audio codec: #1194
  • reliable video support for all Debian and Ubuntu versions via private ffmpeg libraries: #1256
  • use XDG_RUNTIME_DIR if possible: #1129, move more files to /run: #888 (sockets, log file)
  • build and packaging improvements: #977, minify during build: #890, rpm "python2": #1258, netbsd v4l: #1223, selinux policy for printing: #815
  • Mac OS X PKG installer now sets up ".xpra" file and "xpra:" URL association, #1163
  • Mac OS X remote shadow start support (not all versions are supported): #1169

And many other more structural improvements under the hood!


0.17.0 Release

Here are some of the most prominent changes with links to the ticket or changesets for more detailed information.

Sound improvements:

  • GStreamer 1.6.x on MS Windows #1041 and OSX #1069
  • opus is now the default sound codec #1074
  • microphone and speaker forwarding no longer cause sound loops #1141 - thanks to kundanvp
  • new sound container formats #1090: matroska, gdp

shadow servers #899:

  • expose a system tray menu
  • mdns support
  • improved keyboard support
  • OSX improvements #391
  • MS Windows: #1099 and #1150

Platform specific improvements:

  • use newer Plink SSH with Windows Vista onwards #1095
  • OSX PKG installer #641, with ".xpra" file association
  • improved tablet input device support on MS Windows #1131
  • OSX dock clicks now restore existing windows #965
  • OSX clipboard synchronization menu #966

Video encodings:

  • libyuv fast colourspace conversion #973
  • NVENC v6 with HEVC hardware encoding #1046
  • xvid mpeg4 codec #1142

Network and connection:

  • new encryption backend: python-cryptography #876, hardware accelerated AES #1029
  • support for using /var/run on Linux and multiple sockets #1129 (disabled by default)
  • support for AF_VSOCK virtual networking #983
  • broadcast sessions via mDNS on MS Windows and OSX r12231
  • split file authentication module #1159

Starting commands and utilities:

  • the dbus server can now be started automatically #1104
  • new event based start commands: after connection / on connection #1114
  • make it easier to wrap all child commands r11434

Window handling:

  • improved window geometry handling #1097, #997
  • window close event is now configurable, automatically disconnects #1106


  • Webcam forwarding #1030 (incomplete)
  • SELinux policy improvements #815 (incomplete)
  • debug logging and message improvements

You can find more links and ticket details on the 0.17 milestone page.


0.16.0 Release

This release builds on the structural improvements made in 0.15 to enhance the code and add new features.

Here are some of the most prominent changes:

  • desktop scaling (#976), which allows you to upscale window contents saving bandwidth and CPU, and change the scaling at runtime using the system tray or keyboard shortcuts
  • audio-video synchronization (#835)
  • improved printer forwarding and HTML5 client printing support (#913)
  • support for screen capture tools (#988)
  • support remote SSH start without specifying a display (#612), ie: xpra start ssh:SOMEHOST --start=xterm
  • dbus server for easier runtime control (#904)
  • XShape forwarding for X11 clients (#501), so xeyes looks better
  • remove more legacy code, cleanups, add sanity checks, etc
  • switch to GStreamer 1.x on most platforms (#903)
  • zero copy memoryview buffers (#465), safer read-only buffers
  • improved vp9 support (#832)
  • handling of very high client resolutions (8k and above - #969)
  • more reliable window positioning and geometry (many changes)
  • network and protocol improvements: safety checks, threading, etc
  • support multiple socket directories (ie: /run) (#888)
  • encryption improvements: support TCP only encryption, PKCS#7 padding
  • improved DPI and anti-alias synchronization and handling (incomplete #559)
  • better multi-monitor support
  • lz4 faster modes with automatic speed tuning (#878)
  • server file upload from system tray
  • new debugging subcommand: "xpra showconfig"
  • option to select a specific clibpoard to synchronize with (MS Windows only: #966)
  • faster OpenGL screen updates: group screen updates (#792)
  • replace calls to setxkbmap with native X11 API (#371)
  • opensuse support (#1037)
  • XShm for override-redirect windows and shadow servers
  • faster X11 shadow servers (#899)
  • improved logging and debugging tools, fault injection (#910)
  • more robust error handling and recovery from client errors
  • NVENC support for MS Windows shadow servers (in progress: #558)

You can find more links and ticket details on the 0.16 milestone page.


0.15.0 Release

It took a lot longer than planned, but it is finally here and we think it was worth the wait. The fact that the 0.14 LTS branch will continue to be supported for a while allowed us to drop compatibility with older platforms, remove workarounds and the ugly code that goes with it. This new release also received more regression testing than any release before it.

Here are the most noteworthy features and changes:

  • HTML5 Client has been thoroughly re-worted by Josh Higgins, you can test drive it here: http://xpra.org/html5/connect.html.
  • Printer forwarding: you should be able to print on your local printer from a remote session
  • NVENC:
    • support for SDK versions 4 and 5 (newer cards and drivers)
    • Lossless mode
    • YUV444 mode (no colour subsampling)
  • libvpx 1.4 and VP9 support (#832): with the proper configuration, VP9 is now competitive with x264 and allows us to provide a fast and free-software compatible encoding!
  • Sound is now handled out of process, which makes it more reliable (#669 fixes some crashes with the clipboard) and less susceptible to latency jitters in the main process (and we should have audio-video synchronization in the next release: #839), you can also select the sound source (#673, ie: use alsa instead of pulseaudio), and you can start with sound turned off and start it up later (rather than having it on or off globally), the sound bandwidth is shown on the session information bandwidth graphs
  • Remote client logging (#786): forwards the client's log messages to the server (enabled by default with OSX and MS Windows clients, but disabled in the default server configuration)
  • Window management (#775 and many other tickets): still working towards a more standards compliant window manager implementation
  • the OSX build is now automated using modulesets (#533) based on gtk-osx's + jhbuild, so it is now much easier to get going and will allow us to move to 64-bit more easily (#840) - many thanks to Stephen Gauthier
  • Python 3 support (#640 - ongoing): you can now build the xpra client for either Python 2.x or Python 3, the RPM packaging has been updated accordingly. (this remains a work in progress, especially on MS Windows and OSX)
  • Older platforms have been dropped (you should continue to use the 0.14.x LTS branch for those):
    • centos 5.x because of its older Python 2.4
    • Ubuntu Precise and Debian Wheezy because we no longer support their version of libav (though it is still possible to build and run xpra without it)
  • Picture encoding improvements, ie: faster image re-striding, multi-delta regions (#756 minimizes the bandwidth used by browsers unnecessarily repainting the screen)
  • You can now start new commands in an existing session from the tray (#638 - this is disabled by default), or via the "xpra control" interface
  • The automatic window downscaling can now be controlled from the command line (#692)
  • We now include the manual in HTML format in the OSX image and MS Windows installers
  • Better window grouping on MS Windows when forwarding multiple applications (#799 requires Windows 7 and later)
  • More unit tests and regression testing (#660, #177)
  • Improved logging, bug reports, error messages, etc..

There are many other changes under the hood too, too many to list here.

For more details, see the 0.15 milestone page.


0.14.0 Release

This being the first Long Term Support (LTS) release, many of the changes are in fact clean-ups or changes which allow us to provide better security and control over the application's deployment.

In particular, we remove older codecs (python-webm), add support for new alternatives in the packet layer (lzo compression, yaml packet encoder) and allow each and every codec to be disabled: this applies to all the parsers, compressors, picture encoders and decoders - of which there are many. Should there be another security issue with lz4 / lzo (see The 20 Year Old Bug that Went to Mars) or even zlib (ie: CVE-2005-2096), then the application can be secured using configuration changes only, without having to wait for a security update. This is most important for platforms which do not have a real native package manager (MS Windows and Mac OSX).

We no longer ship static codecs for any RPM distribution (centos / Fedora), instead we maintain our own private RPM builds of the media libraries (x264, ffmpeg and for some versions also libvpx and libwebp), which we will keep up to date independently of the xpra packages (and certainly more up to date than any other repositories we are aware of). The repository contains everything needed for building everything from source. Users of the yum repositories will get their security updates as soon as new versions are available instead of just when a newer version of xpra is released. All the RPM specfiles and SRPMS are also available for those who wish to do it all themselves. (thanks to Matthew Gyurgyik)

There is also a new integrated bug reporting tool, and many performance optimizations. The new lzo compression module allows Debian / Ubuntu users to finally benefit from a more modern compression algorithm, at least until lz4 becomes available for all releases. OpenGL accelerated client rendering is now supported on centos 6.5.

One major new feature is the automatic display selection, which means that you no longer need to choose a free X11 display (thanks to Benoit Gschwind).

This will be the last release to support python 2.5 and older, libav, old versions of GTK, etc..

  • RPM packaging changes: #613, #606
  • support for lzo compression (r6986)
  • support for choosing the compressors enabled (lz4, lzo, zlib) - #614
  • support for choosing the packet encoders enabled (bencode, rencode, yaml) - #614, r6934
  • support for choosing the video decoders enabled - #614
  • built in bug report tool, capable of collecting debug information - #627
  • automatic display selection using Xorg "-displayfd" - #172
  • better video region support, increased quality for non-video regions - #410
  • more reliable exit and cleanup code, hooks and notifications - #626, #623, #581, r7097, r7098
  • prevent SSH timeouts on login password or passphrase input - r7252
  • automatically launch the correct tool on MS Windows - r7100
  • OSX: may use the Application Services folder for a global configuration - r7160
  • removed python-webm, we now use the native cython codec only - r6555
  • OpenCL: warn when AMD icd is present (causes problems with signals) - r7250
  • better avahi mDNS error reporting - r7109 + r7110
  • better clipboard compression support - #621
  • better packet level network tuning and cleanups - r7040, r7021, r7019, r6963, r6953, r6951, r6950, r6949, #581, #614
  • support for input methods - #634
  • xpra info cleanups and improvements (show children, more versions, etc) - r6960, r6959
  • integrated keyboard layout detection on *nix - r6931
  • upgrade and shadow now ignore start child - r6851
  • improved automatic encoding selection, also faster - #410, #419, #620
  • keyboard layout selection via system tray on *nix - #86
  • more Cython compile time optimizations - r6759, etc


0.13.0 Release

  • new tray icon and new website icons (r6122)
  • Python3 / GTK3 client support (experimental #90)
  • NVENC module included in binary builds (#564)
  • support for enhanced dummy driver with DPI option (#163)
  • better build system with features auto-detection (many changes, ie: setup.py changes, r5983, r5982, etc)
  • code refactorings and cleanups (ie: alpha channel support)
  • platform fixes (ie: OSX keyboard #567, win32 keyboard #561)
  • removed unsupported CUDA csc module (r6116)
  • improved buffer support (incomplete #465)
  • faster webp encoder (#487)
  • improved automatic encoding selection (#419)
  • support running MS Windows installer under wine (#560)
  • support for window opacity forwarding (r6107)
  • edge resistance for automatic image downscaling (r6524 + r6550)
  • increased default memory allocation of the dummy driver (r6481)
  • more detailed version information, diagnostics and tools (r6227, r6223, r6222, r6341, r6406, r6395, r6408, r6374, etc..)
  • stricter handling of server supplied values (r6442, r6385, r6376, r6296, r6278)


0.12.0 Release

  • NVENC support for YUV444 mode, support for automatic bitrate tuning - #466
  • NVENC and CUDA load balancing for multiple cards - #520
  • proxy encoding: ability to encode on proxy server - #504
  • fix fullscreen on multiple monitors via fakeXinerama - #496
  • OpenGL rendering improvements (for transparent windows, etc) - #492
  • support window grabs (drop down menus, etc) - #336
  • support specifying the SSH port number more easily - r5606
  • enabled TCP_NODELAY socket option by default (lower latency) - #514
  • add ability to easily select video encoders and csc modules
  • add local unix domain socket support to proxy server instances - r5375
  • add "xpra control" commands to control encoding speed and quality - #461
  • improved handling of window resizing - #458
  • improved compatibility with command line tools (xdotool, wmctrl) - r5807
  • ensure windows on other workspaces do not waste bandwidth - #543
  • ensure iconified windows do not waste bandwidth
  • ensure maximized and fullscreen windows are prioritised - r5663
  • ensure we reset xsettings when client disconnects - #546
  • better bandwidth utilization of jittery connections - r5339
  • faster network code (larger receive buffers) - #502
  • better automatic encoding selection for smaller regions
  • improved command line options (add ability to enable options which are disabled in the config file)
  • trimmed all the ugly PyOpenGL warnings on startup - r5681, r5678, r5679
  • much improved logging and debugging tools - #411
  • make it easier to distinguish xpra windows from local windows (border command line option) - r5539
  • improved build system: smaller and more correct build output (much smaller OSX images) - r5772, r5724
  • improved MS Windows command wrappers - r5847
  • improved MS Windows (un)installer checks - #495
  • automatically stop remote shadow servers when client disconnects - r5246
  • MS Windows and OSX build updates: updated Pillow, lz4, etc


0.12.0 Development Update

0.11.0 was an excellent release, with only a few minor bugs found since its release. 0.12.0 is also shaping up nicely, and may get released sooner rather than later even if this means that a few tickets will need to be re-scheduled.

See milestone/0.12 for more details.


Version 0.11.0 released

(Taken from the release announcement:)
This new major release brings a number of new exciting and exclusive features:

  • NVENC support for hardware accelerated h264 encoding on Nvidia cards, this can compress video frames much faster than your CPU ever will, which means that screen updates can get to your client very quickly. xpra is the first open source software to support NVENC.
  • Support for OpenCL and CUDA acceleration of colourspace conversion
  • Proxy mode for serving multiple sessions through a single TCP port:
  • Support for sharing a TCP port with a server: "--tcp-proxy=HOST:PORT"

Non-xpra traffic will be forwarded to the target of your choice, which can be very useful for serving both HTTP and xpra from the same port. See #474

specify the switch "--no-mdns"

  • support for transparency with OpenGL windows and with 8-bit PNG modes
  • "remote shadow start" so you can clone an existing remote X11

display to your desktop in one command: "xpra shadow ssh:HOST:0"

  • Support for faster lz4 compression which can make a significant improvement in latency with RGB encoding, and a faster Cython bencoder
  • ffmpeg and libav are no longer required for vpx and x264 support, as we ship a (slower) fallback module.
  • improved system tray support and native integration
  • stricter and safer value parsing
  • more detailed status information via UI and "xpra info"
  • experimental HTML5 client (#473)
  • non xpra clients are rejected with a more friendly response
  • libvpx 1.3 and ffmpeg 2.1.3 for OSX, MS Windows and static builds

And the usual cleanups and refactorings to make the code easier to work on. The wiki has been updated and has quite a few new pages too.

The development for version 0.12 is about to start, and we already have quite a few tickets queued up. But if you have requests or killer features you would like to see added, do let us know.