Introducing lamco-rdp-server: RDP for the Wayland desktop

· 3 min read #linux #rdp #remote-desktop #wayland

You can reach a Windows machine from anywhere, from any device, with a Remote Desktop client that's already installed. Reaching a Linux desktop the same way has never been that clean, and on a modern Wayland desktop it's been close to miserable. Today I'm releasing the thing I wanted to exist: lamco-rdp-server, an RDP server that runs natively on Wayland, so any RDP client can connect to your Linux desktop and it just works.

Product page: lamco.ai/products/lamco-rdp-server. Source and releases: github.com/lamco-admin/lamco-rdp-server.

Why a Wayland RDP server didn't already exist

Remote desktop on Linux has been stuck in an awkward spot. xrdp, the usual answer, is built around X11, so on a Wayland machine it ends up spinning up a whole separate X session rather than sharing the desktop you're actually using. GNOME's own remote desktop works, but only on GNOME. And the newer remote-desktop efforts in the ecosystem have mostly aimed at virtual-machine consoles, not at the desktop on your real hardware.

Meanwhile, two things have been quietly converging. The Linux desktop has largely moved to Wayland, and RDP has become the remote-desktop protocol that clients on every platform already speak, from Windows Remote Desktop to FreeRDP to the apps on your phone. The gap in the middle, a remote desktop server that's native to Wayland and works across more than one desktop, is exactly the gap lamco-rdp-server is built to fill.

What it does

It connects. You point any RDP client at port 3389, and you're on your Linux desktop, with no X11 anywhere in the picture. Under that sit the parts that make it actually pleasant to use:

  • Native Wayland capture and input, through XDG Desktop Portal and PipeWire, with automatic strategy selection so it adapts to whichever compositor you're running.
  • H.264 video over the EGFX graphics pipeline, including 4:4:4 chroma so that text stays crisp instead of smearing, with hardware encoding on Intel, AMD, and NVIDIA when it's there.
  • Bidirectional clipboard, text and images and files, with the loop detection that keeps a shared clipboard from fighting itself.
  • A configuration GUI, built in Rust with iced, for the people who would rather not hand-edit a TOML file.

The lamco-rdp-server configuration GUI on its Server tab, showing the listen address and port 3389, connection limits, the XDG Desktop Portals toggle, and a Start Server button.

It's written in Rust, and it's built on IronRDP, Devolutions' open-source RDP stack, which is also where I've been contributing the graphics and clipboard pieces this work depends on.

Where it works today

This is a first release, and I'd rather tell you where the edges are than have you find them. It runs well on GNOME and KDE Plasma and on wlroots compositors like Sway. COSMIC is video-only for now, because the input side is waiting on upstream Wayland protocol work that isn't merged yet. On GNOME, session persistence takes a direct path to avoid a permission dialog on every restart. None of that is guesswork: It's what I've tested, on real distributions, and the compatibility details live on the product page.

Where it's going

The interesting part is that the ground is still moving in the right direction. As the Wayland input and capture protocols mature across compositors, the desktops that are video-only today become fully interactive, and the per-compositor special cases shrink. Hardware encoding gets broader, packaging reaches more distributions, and the graphics work keeps going upstream into IronRDP so it isn't just mine. I'd rather build this in the open, on a protocol the whole ecosystem is converging on, than ship a clever island.

Try it

lamco-rdp-server is available now. Grab a build from GitHub releases or the product page, point an RDP client at it, and connect to your Linux desktop from wherever you are. If you've been waiting for remote desktop on Wayland to stop being a fight, I think this is the start of it not being one.