I have a remote Linux machine I SSH into regularly. Most of the time a terminal is enough. Sometimes I need a GUI — Chrome for a site that only works there, Discord while something else runs on the remote box.

Xpra forwards individual application windows over the network. The app runs on the remote host; the window shows up on my local desktop as if it were native. One command, one window.

This post documents the setup I actually use.

System

Local OSFedora 44
Local desktopSway (Wayland)
Xpra clientxpra v6.5.1-r0
Remote accessSSH
Remote hostLinux machine on my LAN (192.168.1.100)

Xpra is installed on both sides. The ssh:// syntax handles starting the remote server when needed — you do not manually launch xpra start on the remote first.

What Xpra does

  • Run a program on the remote machine inside an Xpra session
  • Forward that program’s window(s) to your local display

Think of it as screen or tmux, but for GUI windows.

1. Install Xpra on Fedora

Fedora does not host Xpra packages in its official repos. The Xpra project publishes a Fedora repo on GitHub — add that, then install:

REPO="xpra"
sudo wget -O /etc/yum.repos.d/xpra.repo 
  https://raw.githubusercontent.com/Xpra-org/xpra/master/packaging/repos/Fedora/${REPO}.repo
sudo dnf install xpra

The repo file also documents xpra-lts and xpra-beta variants — I stuck with xpra (stable).

Confirm the install:

xpra --version

On my machine that prints xpra v6.5.1-r0.

Install the same package on the remote host. SSH access between the two machines must already work — Xpra piggybacks on that.

2. Start a session

The simplest invocation opens a remote Xpra session and attaches your local client:

xpra start ssh://osman@192.168.1.100

Replace the user and address with your SSH target — hostname, IP, or ~/.ssh/config alias all work.

The first run may take a few seconds while Xpra starts the server process on the remote side over SSH. After that, you get a session with no application yet — useful if you want to launch things manually inside it.

3. Launch a specific application

This is what I use day to day. One flag, one app:

xpra start ssh://osman@192.168.1.100 --start google-chrome-stable

Another from my history:

xpra start ssh://osman@192.168.1.100 --start discord

The remote Xpra server starts, runs the command on the remote machine, and the window appears locally. Chrome and Discord both worked without extra configuration on my setup.

You can pass any command the remote shell understands. If the binary is not in the default PATH for non-interactive SSH, use the full path or wrap it in a script.

4. Verify

After xpra start ssh://... --start <app>, the application window should appear on your local desktop within a few seconds.

If the window never shows up, check SSH first (ssh osman@192.168.1.100 echo ok) before debugging Xpra.

For more information

See the Xpra documentation for session management, compression, codecs, and troubleshooting beyond what I use here.