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
- 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
Pre-built packages are available from GitHub Releases and lamco.ai/download.
| 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.
| 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.
| 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.
# Generate TLS certificates
./scripts/generate-certs.sh
# Start the server
lamco-rdp-server -c config.toml -vv
# Or use the GUI
lamco-rdp-server-guiThen connect from any RDP client (Windows Remote Desktop, FreeRDP, Remmina, etc.) to port 3389.
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) |
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
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.
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.
| 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.
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.
Contributions welcome. Please open an issue before starting significant work.