No description
  • Python 78.9%
  • Cython 15.5%
  • C 2.9%
  • Shell 0.8%
  • Roff 0.7%
  • Other 1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Antoine Martin 16f4e23c56 fix docs rendering on github pages
GitHub Pages renders markdown with Jekyll / kramdown rather than GFM,
and kramdown's `parse_block_html` defaults to false: markdown nested
inside a block-level HTML tag is emitted verbatim. All the collapsible
sections were therefore showing their contents as plain text, links
and code blocks included.

Opt in per element with `markdown="1"` - github.com's sanitizer drops
the unknown attribute, so the repository view is unchanged. Enabling
`parse_block_html` globally instead is not an option: none of the
`</details>` tags are preceded by a blank line, so kramdown swallows
them as lazy list continuations and produces endlessly nested blocks.

Also fix two bugs this uncovered in the documentation index:
the "Display Characteristics" section was never closed, hiding
everything from "Network" down to "Sponsors" inside it, and the
`subsystems` link pointed at a directory rather than its README.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-30 23:01:33 +07:00
.claude/skills update the client feature table for the rust client 2026-07-30 12:43:58 +07:00
.codex/skills/xpra-package-changelog match actual formatting 2026-07-30 11:43:37 +07:00
.github ci: generate a source archive for tagged releases 2026-07-29 18:25:31 +07:00
docs fix docs rendering on github pages 2026-07-30 23:01:33 +07:00
fs 'src' subcommand should not modify build info 2026-07-29 18:04:18 +07:00
packaging add note to prevent edits 2026-07-29 17:55:02 +07:00
tests fix clipboard compressor negotiation 2026-07-30 22:07:48 +07:00
xpra fix clipboard compressor negotiation 2026-07-30 22:07:48 +07:00
.git-blame-ignore-revs Add .git-blame-ignore-revs file 2024-02-23 00:51:05 +02:00
.gitignore cleaner wayland split 2026-07-26 20:41:21 +07:00
.pre-commit-config.yaml #4977 make pre-commit flake8 honour pyproject per-file-ignores 2026-07-24 21:34:18 +07:00
CLAUDE.md this helps Claude AI 2026-04-06 15:24:10 +07:00
CODE_OF_CONDUCT.md use relative URLs so generated docs still work 2025-08-29 15:12:42 +07:00
CONTRIBUTING.md use a new invite for the discord channel 2025-01-08 20:24:12 +07:00
COPYING restructure so packaging files will be included in the releases 2021-01-22 20:56:39 +07:00
debian make it easier to build debian packages of xpra 2022-10-14 16:55:19 +07:00
MANIFEST.in forgot to add latest codecs to sdist 2026-06-14 20:28:38 +07:00
pyproject.toml #4977 make pre-commit flake8 honour pyproject per-file-ignores 2026-07-24 21:34:18 +07:00
README.md use relative URLs so generated docs still work 2025-08-29 15:12:42 +07:00
setup.py cleaner wayland split 2026-07-26 20:41:21 +07:00
sonar-project.properties Create sonar-project.properties 2023-04-19 12:17:10 +02:00

  1. About
  2. Installation
  3. Usage
  4. Documentation
  5. Help

About

Xpra is known as "screen for X" : its seamless mode allows you to run X11 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(s), without losing any state. Effectively giving you remote access to individual graphical applications. It can also be used to access existing desktop sessions and start remote desktop sessions.

Xpra is open-source (GPLv2+) with clients available for many supported platforms, and the server includes a built-in HTML5 client. Xpra is usable over a wide variety of network protocols and does its best to adapt to any network conditions.

Xpra forwards and synchronizes many extra desktop features, which allows remote applications to integrate transparently into the client's desktop environment: audio input and output, printers, clipboard, system trays, notifications, webcams, etc.

It can also open documents and URLs remotely, display high bit depth content, and it will try to honor the display's DPI.

Here's what a seamless session with two windows (an xterm and glxspheres) looks like when attached from an MS Windows 11 desktop client: Windows11-client (the windows may look like native windows, but they are running on a remote Linux server)


Installation

Official stable downloads

All the packages are signed. There are also LTS and beta builds available.
For more information and more build architecture options, see xpra downloads.

Build from source

git clone https://github.com/Xpra-org/xpra; cd xpra
python3 ./setup.py install

For more details, see building from source. To contribute to the project, please try to use pull-requests and follow our code of conduct. Unit test status: xpra


Usage

Initial requirements

xpra must be installed on the client and the host.

You can use the html5 client in which case xpra is only required on the host.

Seamless Mode

Run xterm on a remote host, display and interact with it locally (from the client machine):

xpra seamless ssh://USER@HOST/ --start=xterm
# hint: xterm must be installed on the HOST.

For more examples, see usage.

Shadow

View an existing desktop session running on a remote host:

xpra shadow ssh://USER@HOST/

Network Access

Xpra servers can support many different types of connections using a single TCP port: SSL, SSH, (secure) http / websockets, RFB, etc..
Connections can be secured using encryption and many authentication modules.
Sessions can be automatically announced on LANs using multicast DNS so that clients can connect more easily using a GUI (ie: xpra mdns-gui).
Its flexible proxy server can be used as a relay or front end for multiple server sessions.


Documentation

There is extensive documentation right here for the current development version. This documentation is also included with each release.

For more generic version-agnostic information, checkout the wiki.


Help

Make sure to check the FAQ, your question may already be answered there. You can ask your questions on the GitHub discussions, or on the IRC channel #xpra on libera.chat or using discord. If you have hit a bug (sorry about that!), please see reporting bugs.