Skip to content

lamco-admin/lamco-rdp-server

Repository files navigation

lamco-rdp-server

Wayland-native RDP server for Linux desktop sharing

Connect to your Linux desktop from any RDP client (Windows, macOS, Linux, iOS, Android). Built in Rust on IronRDP with native Wayland support via XDG Desktop Portal and PipeWire.

Product Page  |  Download  |  Open Source Crates


Highlights

  • Wayland-first -- XDG Desktop Portal for screen capture and input, no X11 required
  • H.264 via EGFX -- AVC420 and AVC444 for crystal-clear text at full chroma resolution
  • Hardware encoding -- VA-API (Intel/AMD) and NVENC (NVIDIA) support
  • Adaptive streaming -- SIMD-optimized damage detection, 5-60 FPS based on activity
  • Clipboard sync -- bidirectional clipboard via Portal, Klipper, or wl-data-control (direction depends on deployment)
  • Session health monitoring -- real-time PipeWire/Portal/EIS health with D-Bus signals
  • View-only mode -- ScreenCast-only strategy for monitoring without input injection
  • Graceful shutdown -- SIGTERM/SIGINT handling with explicit PipeWire cleanup
  • OpenH264 dynamic loading -- patent-compliant runtime codec loading with dual ABI support
  • GUI configuration -- graphical settings tool built with iced
  • 378 tests passing -- comprehensive test coverage across all modules

Downloads

Pre-built packages are available from GitHub Releases and lamco.ai/download.

Community Edition (free to use)

Format Distro Install
Flatpak Any Linux flatpak install --user lamco-rdp-server-*.flatpak
Snap Any Linux sudo snap install lamco-rdp-server

Community Edition runs fully sandboxed via XDG Desktop Portals. Clipboard is supported from Windows to Linux; Linux to Windows clipboard requires a native install. See Clipboard below.

Native / Distribution Packages

Format Distro Install
AUR Arch Linux yay -S lamco-rdp-server
RPM Fedora 42+ sudo dnf install ./lamco-rdp-server-*.fc42.x86_64.rpm
RPM openSUSE Tumbleweed sudo zypper install ./lamco-rdp-server-*.suse-tw.x86_64.rpm
RPM RHEL 9 / AlmaLinux 9 sudo dnf install ./lamco-rdp-server-*.el9.x86_64.rpm
DEB Debian 13 (Trixie) sudo dpkg -i lamco-rdp-server_*_amd64.deb
Source Any (Rust 1.88+) cargo build --release --offline

Native installs provide full bidirectional clipboard, hardware GPU encoding, and all compositor integration strategies. Free for single-server use and non-profits; commercial license required for multi-server deployments.

The source tarball on the Releases page includes vendored dependencies for offline builds.

Platform Support

Desktop Environment Video Input Clipboard Deployment
GNOME 45+ (Ubuntu 24.04, Fedora 42) AVC444 Portal+EIS Portal Flatpak or native
GNOME 40-44 (RHEL 9, AlmaLinux 9) AVC444 Portal+EIS -- Flatpak or native
KDE Plasma 6.3+ (openSUSE TW, Debian 13) AVC444 Portal+EIS Klipper Flatpak or native
Sway / River (wlroots) AVC444 wlr-direct wl-clipboard Native only
Hyprland (official portal) AVC444 wlr-direct wl-clipboard Native only
Hyprland (hypr-remote community portal) AVC444 Portal Portal Flatpak or native
COSMIC (System76) AVC420 -- -- Video-only (native or Flatpak)

Notes:

  • GNOME 40-44 (RHEL 9) lacks Portal clipboard because RemoteDesktop v1 predates the clipboard API.
  • KDE Portal clipboard has a known bug (KDE#515465) on Plasma 6.3.90-6.5.5; fixed in 6.6+. Klipper D-Bus cooperation works on all KDE versions as a fallback.
  • wlroots compositors need native install for input and clipboard; Flatpak provides video-only on these desktops.
  • COSMIC provides video-only (no RemoteDesktop portal yet). Blocked on upstream Smithay libei.

For the full compatibility matrix with portal versions, session persistence, and deployment recommendations, see the product page.

Quick Start

# Generate TLS certificates
./scripts/generate-certs.sh

# Start the server
lamco-rdp-server -c config.toml -vv

# Or use the GUI
lamco-rdp-server-gui

Then connect from any RDP client (Windows Remote Desktop, FreeRDP, Remmina, etc.) to port 3389.

Building from Source

Requirements: Rust 1.88+, OpenSSL dev, PipeWire dev, nasm (optional, 3x faster OpenH264)

cargo build --release                                    # software H.264
cargo build --release --features gui                     # with configuration GUI
cargo build --release --features "gui,vaapi"             # with VA-API hardware encoding
cargo build --release --features "gui,wayland,libei"     # full-featured for wlroots
Feature flag What it enables
gui Graphical configuration tool (iced)
vaapi VA-API hardware encoding (Intel/AMD)
nvenc NVENC hardware encoding (NVIDIA)
wayland Native wlroots protocol support (wlr-direct)
wl-clipboard Clipboard via wl-data-control for wlroots compositors
libei Portal + EIS input for Flatpak on wlroots
pam-auth PAM authentication (native only, not in Flatpak)

Architecture

lamco-rdp-server/
  src/
    server/         RDP listener, TLS, session management
    rdp/            Channel multiplexing (EGFX, clipboard, audio, input)
    egfx/           H.264 encoding pipeline (OpenH264, VA-API, NVENC)
    clipboard/      Clipboard orchestration (Portal, Klipper, wl-clipboard)
    health/         Session health monitor and D-Bus signal relay
    audio/          Audio capture and encoding (PCM, Opus)
    damage/         SIMD tile-based frame differencing
    session/        XDG Desktop Portal strategies and persistence
    gui/            Configuration GUI (iced)
  bundled-crates/
    lamco-clipboard-core/     Clipboard protocol core
    lamco-rdp-clipboard/      IronRDP clipboard backend
  packaging/        Flatpak manifest, systemd units, polkit, D-Bus config

Open Source Foundation

lamco-rdp-server is built on a set of published Rust crates available on crates.io:

Crate Purpose
lamco-portal XDG Desktop Portal integration
lamco-pipewire PipeWire screen capture with DMA-BUF
lamco-video Video frame processing
lamco-rdp Core RDP protocol types
lamco-rdp-input Input event translation (200+ key mappings)
lamco-wayland Wayland protocol bindings

These crates are MIT/Apache-2.0 licensed. See lamco.ai/open-source for documentation and details.

The server also depends on a fork of IronRDP that adds MS-RDPEGFX Graphics Pipeline Extension and clipboard file transfer support. Contributions to upstream IronRDP are in progress.

Troubleshooting

First connection fails, second succeeds -- Normal TLS behavior. The RDP client rejects the self-signed certificate on first attempt, then retries after accepting it. The acceptance is cached for subsequent connections.

Clipboard: Linux to Windows not working (Flatpak) -- This is expected. The Portal clipboard API does not notify sandboxed applications when local desktop apps copy content. Use a native install for full bidirectional clipboard. Windows to Linux paste works in Flatpak.

Clipboard not working at all (Flatpak) -- Portal clipboard requires RemoteDesktop v2 (GNOME 45+, KDE Plasma 6.3+). On RHEL 9 and other older distributions with RemoteDesktop v1, clipboard is unavailable in Portal mode.

Permission dialog on every start -- GNOME deliberately does not persist RemoteDesktop sessions. This is a compositor policy decision, not a bug. KDE Plasma supports session tokens.

"Unknown (not in Wayland session?)" -- Cosmetic. Flatpak sandboxes hide XDG_CURRENT_DESKTOP. The server queries D-Bus directly for portal capabilities regardless.

Clipboard: Flatpak vs Native {#clipboard-flatpak-vs-native}

Direction Community Edition (Flatpak/Snap) Native Install
Windows → Linux (text) Supported Supported
Windows → Linux (files) Supported Supported
Linux → Windows (text) Not available Supported
Linux → Windows (files) Not available Supported

The Community Edition fully embraces the Flatpak/Snap sandbox philosophy, using only standard XDG Desktop Portal APIs. The Portal clipboard API does not provide intra-session clipboard change notifications, which prevents Linux-to-Windows clipboard transfer. This is a Portal specification boundary, not a bug. Native installs bypass this limitation through direct Wayland protocol access.

License

Business Source License 1.1 (BSL)

Community Edition (Flatpak, Snap): Free to use -- no license purchase required.

Native / distribution packages: Free for single-server use and non-profit organizations.

Plan Price Servers Applies To
Community Edition Free Unlimited Flatpak, Snap
Single Instance Free 1 Any
Non-profit Free Unlimited Any
Personal $4.99/mo or $49/yr 1 Native/distro
Team $149/yr Up to 5 Native/distro
Business $499/yr Up to 25 Native/distro
Corporate $1,499/yr Up to 100 Native/distro
Enterprise Custom Unlimited Native/distro

Converts to Apache License 2.0 on 2028-12-31.

See lamco.ai for full pricing and licensing details.

Contributing

Contributions welcome. Please open an issue before starting significant work.

About

Wayland-native RDP server for Linux desktop sharing. H.264 via EGFX, VA-API/NVENC hardware encoding, clipboard sync, multi-monitor. GNOME, KDE Plasma, Sway, Hyprland.

Topics

Resources

License

Unknown, Unknown licenses found

Licenses found

Unknown
LICENSE
Unknown
LICENSE-APACHE

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors