Xpra is 'screen for X': it allows you to run X programs, usually on
a remote host, direct their display to your local machine, and then to
disconnect from these programs and reconnect from the same or another
machine, without losing any state. It gives you remote access
to individual applications.
Xpra is "rootless" or "seamless": programs you run under it show up on your desktop as regular programs,
managed by your regular window manager.
Sessions can be accessed over SSH, or password protected over plain TCP sockets.
Xpra is usable over reasonably slow links and does its best to adapt to changing network bandwidth constraints,
especially with x264 and automatic settings.
Xpra is open-source (GPLv2+), multi-platform and multi-language, with current clients written in Python and Java.
This fork adds the following enhancements over the original version
- Better platform support: Mac OS X,
Microsoft Windows ,
Android APK (beta),
OpenBSD and many more
- Up to date binary packages and repositories:
, and many more
- Concurrent multi-client connections (experimental)
- GUI launcher
- Supports global configuration file (
and per-user overrides (
- Zero-copy and much lower CPU overhead in network code, faster packet encoder
- System tray menu for easy disconnection, access to options and statistics
- Memory-mapped data transfers for local connections - extremelly fast!
JPEG and PNG image compression (all optional, but highly recommended)
- Better client keyboard layout support
- Handles screen update storms and fast screen refresh rates
- Support for password protection option for securing plain TCP connections
- Forwarding of system bell and custom application cursors
- Forwarding of application notifications (requires its own dbus daemon)
- Support for Xdummy and the RandR extension
which fixes a number of otherwise unfixable display bugs (ie: #1, #2)
- Ability to disable pulseaudio and clipboard synchronization, change dpi setting, etc
- Support for shadowing existing displays (see
- Clean client disconnection
- Lots of small bug fixes, security fixes and portability fixes (IPv6, endianness, platforms, etc)
There is a front-end for xpra, available here
The installer packages and repositories already contain xpra, amongst other things,
follow the download instructions
there for installation
and install only the "xpra" package if you do not wish to try the GUI.
You can also browse the packages directly here
On the machine which will export the application (xterm in this example):
xpra start :100
Or more simply (which is also more resilient if running these commands remotely):
xpra start :100 --start-child=xterm
For the simple case, we can then attach to this xterm session from the same machine (if it has a desktop session), with:
If connecting from a remote machine, you would use something like:
xpra attach ssh:serverhostname:100
One can also use plain TCP sockets and password authentication if desired.
You can find source code releases here
, setup and build instructions here
New major versions are generally released on a bimonthly cycle (more or less - when it is ready).
(for binary packages, see above)