Lamco RDP Server
A full-featured Wayland-native RDP server for Linux written in Rust
Professional remote desktop access with hardware-accelerated H.264 encoding, crystal-clear text rendering, and premium performance features. Built native to Wayland—no X11 compromises.
Remote desktop on Linux has always meant compromise. X11-based solutions don't work properly with modern Wayland desktops. VNC lacks the efficiency of H.264 encoding. Built-in options are limited to specific desktop environments.
Lamco RDP Server changes that.
Built from the ground up for Wayland using XDG Desktop Portals and written entirely in Rust, it delivers professional remote desktop capabilities to any modern Linux desktop. Connect from Windows, macOS, Linux, or mobile using standard RDP clients you already have.
Lamco RDP Server provides remote access to your existing Linux desktop session. Connect to your GNOME, KDE, or wlroots workstation via RDP and interact with your applications remotely. Perfect for remote work, system administration, and accessing your desktop from anywhere.
Looking for headless multi-user VDI? lamco-VDI (in development) will provide enterprise-grade virtual desktop infrastructure with Smithay-based custom compositor, multi-session support, and true headless deployment. Learn about the differences →
Features Vary by Platform & Installation Method
Lamco RDP Server's capabilities depend on your distribution, desktop environment (GNOME, KDE, Sway, etc.), and installation method (Flatpak vs native package).
Native Package
Best for production servers and maximum performance.
- ✓ Hardware acceleration (NVIDIA NVENC, Intel/AMD VA-API)
- ✓ Advanced desktop environment integration
- ✓ Full systemd support
- ✓ Direct filesystem access
Available: Fedora, RHEL, openSUSE, Debian 13
Flatpak
Universal compatibility, works on any distribution.
- ✓ Works on Ubuntu 22.04/24.04 and all distros
- ✓ Sandboxed security
- ✓ Automatic Flathub updates
- • Software encoding (no GPU acceleration)
Best for: Desktop testing, user workstations
Key Benefits
Wayland Native
The first RDP server built specifically for XDG Desktop Portals. Works with GNOME, KDE Plasma, Sway, Hyprland, and other Wayland compositors without requiring Xwayland or X11 fallbacks. Your Wayland security model stays intact.
Crystal-Clear Text
AVC444 encoding delivers full 4:4:4 chroma resolution—the same quality used by professional video workflows. Text, code, and UI elements render sharp and readable, not muddy like standard 4:2:0 video. Perfect for programming, document editing, and design work.
Platform note: Automatically enabled on Ubuntu 24.04, Fedora 40+, Debian 13. Disabled on RHEL 9 (Mesa 22.x quirk).
Hardware Accelerated
Offload H.264 encoding to your GPU. Support for NVIDIA NVENC and Intel/AMD VA-API means your CPU stays free for actual work. Automatic fallback to optimized software encoding when hardware isn't available.
💡 Native Package Feature
GPU acceleration available with native packages. Flatpak uses optimized software encoding (sandbox security).
Premium Performance
Adaptive frame rate adjusts from 5 to 60 FPS based on screen activity—full speed for video, power-saving for static content. Latency governor optimizes for interactive work or visual quality. Predictive cursor technology compensates for network delay.
Unattended Operation
Multi-strategy session persistence enables zero-dialog unattended access. Server reboots, service restarts, and network reconnections happen automatically without manual intervention.
- ✓ GNOME servers: Mutter Direct API (zero dialogs)
- ✓ wlroots servers: Native protocols (zero dialogs)
- ✓ KDE desktops: Portal tokens (one dialog first time)
- ✓ Enterprise: TPM 2.0 credential storage
Features
Video Encoding
| Codecs | AVC420, AVC444 |
| Encoders | OpenH264, NVENC, VA-API |
| Frame Rate | 5-60 FPS adaptive |
| Max Resolution | 4K UHD |
| Color Spaces | BT.709, BT.601, sRGB |
Input & Clipboard
| Keyboard | Full scancode translation |
| Mouse | Absolute & relative |
| Multi-Monitor | Coordinate mapping |
| Text Clipboard | Bidirectional sync |
| File Clipboard | Drag-and-drop transfer |
Security
| Encryption | TLS 1.3 |
| Authentication | None (dev), PAM (system) |
| Certificates | Auto-generated or custom |
Desktop Environment Support
| GNOME | ✅ Production ready |
| KDE Plasma 6+ | ⏳ Pending testing |
| Sway | ⏳ Implementation complete |
| Hyprland | ⏳ Implementation complete |
| COSMIC | 🚧 In development |
Integrated capability discovery: Our Service Advertisement Registry probes your system at startup—compositor, portal versions, hardware encoders, GPU capabilities—and automatically selects optimal code paths. When something isn't available, you get clear diagnostics instead of cryptic failures.
Platform Compatibility Matrix
Real test results from production systems. Features vary by the combination of distribution + desktop environment + installation method.
Encounter an issue? Report it on GitHub →
Ubuntu 24.04 LTS
GNOME 46.0 | Portal v5 | xdg-desktop-portal-gnome | Tested 2026-01-15 (VM 192.168.10.205, Flatpak)
Note: Platform-specific limitations apply to older RHEL distributions (see RHEL 9 below)
- • H.264/AVC444v2 encoding (4:4:4 chroma)
- • Adaptive FPS: 5-60 FPS, ~10ms latency
- • Full keyboard & mouse via Portal RemoteDesktop v2
- • Damage tracking with 90%+ bandwidth savings
- • Multi-monitor coordinate mapping
- • Metadata cursor rendering
- • Clipboard: Text/image via Portal (stability varies with data complexity)
- • Session persistence: Portal tokens rejected by GNOME policy
- • Software encoding only in Flatpak (sandbox restriction)
- • Mutter Direct API (bypasses Portal for zero-dialog sessions)
- • Hardware acceleration (NVENC/VA-API)
- • Direct D-Bus integration
- Status: Implementation complete, testing in progress
Ubuntu 22.04 LTS
GNOME 42 | Portal v4 | Mutter Direct API support | Testing in progress
Implementation complete for native package deployment with Mutter Direct API integration.
Expected: Zero-dialog sessions, full RDP feature support. Testing infrastructure in progress.
Fedora 40 / 41 / 42
GNOME 46+ | Portal v5 | xdg-desktop-portal-gnome | Testing in progress
Native package available via OBS. Expected to behave similar to Ubuntu 24.04 (GNOME 46).
Expected: AVC444 support, Mutter Direct API for zero-dialog sessions, full hardware acceleration.
RHEL 9.7 / AlmaLinux 9 / Rocky 9
GNOME 40 | Portal v4 | RemoteDesktop v1 | Tested 2026-01-15 (VM 192.168.10.6, Flatpak)
- • H.264/AVC420 encoding (4:2:0 chroma)
- • Full keyboard & mouse input
- • Damage tracking with bandwidth optimization
- • Multi-monitor support
- • Clipboard synchronization (Portal RemoteDesktop v1 lacks clipboard interface)
- • AVC444 codec (Mesa 22.x blur issue)
- • Portal v1 predates clipboard API (added in v2)
- • AVC420 provides good quality for this platform
- • RHEL 10 expected to include Portal v5
- • Clipboard details →
Debian 13 (Trixie)
GNOME 47+ | Portal v5+ | Native package available via OBS | Rust 1.79
Native package builds available. Expected to behave similar to Ubuntu 24.04 with full feature support.
openSUSE Tumbleweed / Leap 15.6
GNOME / KDE available | Portal v5+ | Native package via OBS | Rust 1.78-1.82+
Native packages building successfully. Features depend on desktop environment selection (GNOME vs KDE).
KDE Plasma 6.x
Kubuntu 24.04, KDE neon, Fedora KDE Spin | Portal v5 | xdg-desktop-portal-kde | Implementation complete
- • Portal ScreenCast v4 (video streaming)
- • Portal RemoteDesktop v2 (input injection)
- • Clipboard via SelectionOwnerChanged D-Bus signals
- • Session restore tokens (Portal v5 persist/restore)
- • DMA-BUF zero-copy buffer paths
- • SelectionOwnerChanged signals (more reliable clipboard than GNOME's approach)
- • Portal token persistence policy (not rejected like GNOME)
- • Strong DMA-BUF implementation (zero-copy video with lower CPU usage)
- • Explicit sync support (Plasma 6.0+)
Arch Linux / Manjaro
GNOME / KDE / Sway / Hyprland available | Portal versions vary | Rolling release | Rust: Latest
Build from source using Cargo recommended currently. AUR package planned. Behavior depends on chosen desktop environment (GNOME/KDE/wlroots).
wlroots-based Compositors
Sway, Hyprland, River, Wayfire | xdg-desktop-portal-wlr / xdg-desktop-portal-hyprland | 1,050 lines implemented | Dual-strategy support
Direct wlroots protocol support (1,050 lines)
- • wlr-screencopy-v1 (screen capture)
- • wlr-virtual-keyboard-v1 (keyboard input)
- • wlr-virtual-pointer-v1 (mouse input)
- • Zero permission dialogs (native protocols)
- • Multi-monitor coordinate transformation
Compositors: Sway, Hyprland, River, Wayfire
Portal + libei/EIS integration (480 lines)
- • Portal ScreenCast + RemoteDesktop
- • ConnectToEIS for input injection
- • Session token persistence
- • One dialog first time, then token restores
Status: Waiting for Portal backend PR merges (xdg-desktop-portal-wlr #359, xdg-desktop-portal-hyprland)
COSMIC Desktop
Pop!_OS 24.04 | cosmic-comp (latest versions) | Portal v5 (partial implementation)
Current Capabilities
- • ScreenCast: ✅ Working
- • RemoteDesktop: 🚧 In active development via Smithay project
- • libei/Ei integration: Progressing
Development Velocity
- • Capabilities improving with each COSMIC release
- • Video streaming works currently
- • Full RDP support expected as Smithay libei/Ei integration completes
Flatpak vs Native Package
| Feature | Flatpak | Native Package |
|---|---|---|
| Universal compatibility | ✅ Any distro | Specific distro + DE |
| Hardware acceleration (NVENC/VA-API) | Software encoding | ✅ Full GPU support |
| Session persistence | Varies by DE | ✅ Direct APIs available |
| Systemd integration | Basic support | ✅ Full integration |
| File clipboard | Configuration-dependent | ✅ Direct filesystem access |
| Sandboxed security | ✅ Yes | System-level access |
| Automatic updates | ✅ Via Flathub | ✅ Via distro repos |
📦 Flatpak Best For:
Desktop use, testing, user workstations, sandboxed environments, universal compatibility across any distribution
⚙️ Native Package Best For:
Production servers, unattended access, GPU acceleration, advanced desktop environment integration, systemd services
Have questions about which installation method is right for your setup?
Contact us at office@lamco.io or ask on GitHubComprehensive Distribution + Desktop Environment Support
| Distribution | Desktop Environment | Portal Version | GNOME Version | Native Pkg | Flatpak | Status |
|---|---|---|---|---|---|---|
| Ubuntu 24.04 LTS | GNOME | v5 | 46.0 | — | ✅ | Tested ✅ |
| Ubuntu 22.04 LTS | GNOME | v4 | 42 | — | ✅ | Testing ⏳ |
| RHEL 9 / AlmaLinux 9 / Rocky 9 | GNOME | v4 | 40 | ✅ | ✅ | Tested ✅ |
| Fedora 40 / 41 / 42 | GNOME | v5 | 46+ | ✅ | ✅ | Testing ⏳ |
| Debian 13 (Trixie) | GNOME | v5+ | 47+ | ✅ | ✅ | Testing ⏳ |
| openSUSE Tumbleweed | GNOME / KDE | v5+ | 46+ / Plasma 6 | ✅ | ✅ | Testing ⏳ |
| openSUSE Leap 15.6 | GNOME / KDE | — | — / Plasma 5.x | ✅ | ✅ | Testing ⏳ |
| Kubuntu 24.04 | KDE Plasma | v5 | — | — | ✅ | Testing ⏳ |
| KDE neon | KDE Plasma | v5 | — | — | ✅ | Testing ⏳ |
| Arch / Manjaro | GNOME / KDE / Sway / Hyprland | v5+ | 46+ / varies | AUR ⏳ | ✅ | Testing ⏳ |
| Pop!_OS 24.04 | COSMIC | v5 | — | — | ✅ | In Dev 🚧 |
| Any (wlroots) | Sway / Hyprland / River / Wayfire | v5+ | — | ✅ | ✅ | Testing ⏳ |
Portal versions and backends vary by distribution. The Service Advertisement Registry automatically detects your configuration and adapts.
Clipboard Availability by Platform
Clipboard synchronization availability depends on your Linux distribution's Portal RemoteDesktop version
| Platform | Portal Version | Clipboard Status | Details |
|---|---|---|---|
| Ubuntu 24.04 | Portal v5 (RemoteDesktop v2) | ✅ Available | Full bidirectional clipboard (text, images, files) |
| Fedora 40+ | Portal v5 (RemoteDesktop v2) | ✅ Available | Full bidirectional clipboard |
| Debian 13 | Portal v5 (RemoteDesktop v2) | ✅ Available | Full bidirectional clipboard |
| openSUSE Tumbleweed | Portal v5 (RemoteDesktop v2) | ✅ Available | Full bidirectional clipboard |
| RHEL 9 / AlmaLinux 9 / Rocky 9 | Portal v4 (RemoteDesktop v1) | ❌ Not Available | Portal v1 lacks clipboard interface |
| KDE Plasma 6+ | Portal v5 (expected) | ✅ Expected | Testing pending |
| wlroots (Sway/Hyprland) | Portal v5 (varies) | ✅ Expected | Testing pending |
Technical Background
The XDG Desktop Portal's RemoteDesktop interface added clipboard support in version 2, which ships with Portal v5 on modern distributions. Older distributions like RHEL 9 use Portal v4 with RemoteDesktop v1, which predates clipboard functionality.
Why Portal v1 lacks clipboard: The org.freedesktop.portal.RemoteDesktop interface in v1 (circa 2020-2022) focused exclusively on screen capture and input injection. Clipboard synchronization was added in RemoteDesktop v2 (2023+) to support bidirectional data transfer between remote client and Linux host.
Workarounds for RHEL 9
- → Wait for RHEL 10: Expected to ship Portal v5 with RemoteDesktop v2 (clipboard support)
- → File transfer alternatives: Use RDP file transfer when implemented (roadmap feature)
- → Native package deployment: Future releases may include alternative clipboard methods for Portal v1 platforms
Desktop Sharing vs Headless VDI
Lamco RDP Server is designed for desktop sharing — remotely accessing an existing Linux desktop session. For enterprise multi-user VDI deployments, we're developing lamco-VDI, a separate product built on the same RDP core.
Lamco RDP Server
Desktop Sharing
What It Does
Remote access to your existing Linux desktop session. GNOME, KDE, or wlroots must be running.
Perfect For
- ✓ Remote access to personal workstation
- ✓ Work from home (access office desktop)
- ✓ System administration with DE
- ✓ Screen sharing / tech support
Architecture
- • Single user per machine
- • Requires desktop environment
- • ~800MB+ resource usage
lamco-VDI
Headless Multi-User VDI
What It Does
Enterprise VDI with no desktop environment required. Isolated sessions for multiple concurrent users.
Perfect For
- ✓ Enterprise VDI (100+ employees)
- ✓ Cloud workspaces (AWS/Azure/GCP)
- ✓ Thin client infrastructure
- ✓ Kubernetes/Docker deployment
Architecture
- • Multi-user (10-50+ per server)
- • Embedded Smithay compositor
- • ~256MB per user session
Alpha in 6-9 months
| Your Requirement | Recommended Product |
|---|---|
| Access my personal Linux workstation remotely | Lamco RDP Server |
| Remote server with GNOME/KDE installed | Lamco RDP Server |
| Multi-user concurrent sessions | lamco-VDI (dev) |
| Headless server (no DE) | lamco-VDI (dev) |
| Enterprise VDI (50+ users) | lamco-VDI (dev) |
Session Persistence & Unattended Access
Enable zero-dialog unattended operation through intelligent runtime strategy selection
Based on your compositor and deployment method, the server automatically selects the optimal approach
The Challenge
Wayland's security model requires explicit user permission for screen capture and input injection. By default, a permission dialog appears every time the server restarts — unacceptable for production servers, VMs, or headless deployments.
The Solution: Multi-Strategy Architecture
Lamco RDP Server implements four distinct session persistence strategies and automatically selects the best available for your specific environment.
| Strategy | Compositors | Deployment | Dialogs | Status |
|---|---|---|---|---|
| Mutter Direct API | GNOME 42+ | Native package | Zero dialogs | Implementation complete |
| wlr-direct protocols | Sway, Hyprland, River | Native package | Zero dialogs | Implementation complete (1,050 lines) |
| Portal + Session Tokens | KDE Plasma 6+, Non-GNOME | Any | One first time, then zero | Expected to work |
| Portal + libei/EIS | wlroots (in Flatpak) | Flatpak | One first time, then zero | Implementation complete (480 lines) |
| Basic Portal (fallback) | All compositors | Any | Every restart | Fallback strategy |
Strategy Selection is Automatic
You don't configure anything. At startup, Lamco RDP Server:
GNOME, KDE, wlroots, etc.
Flatpak vs native package
Version, interface support
Optimal for zero dialogs
If advanced unavailable
Flatpak Deployment
- ✅ Works on ALL distributions
- ✅ Sandboxed security
- ✅ Automatic Flathub updates
- ⚠️ GNOME: Portal strategy only (dialog every restart)
- ✅ wlroots: libei/EIS strategy (one dialog, then zero)
- ✅ KDE: Session tokens (one dialog, then zero)
Best for: Desktop testing, evaluation, user workstations
Native Package
- ✅ Full system integration
- ✅ Hardware encoding (VA-API, NVENC)
- ✅ GNOME: Mutter Direct API (zero dialogs)
- ✅ wlroots: Direct protocols (zero dialogs)
- ✅ KDE: Session tokens (one dialog, then zero)
- ⚠️ Distribution-specific (not universal)
Best for: Production servers, VMs, unattended operation
GNOME Session Persistence: Important Note
GNOME's Portal backend deliberately rejects session persistence for RemoteDesktop sessions.
This is a security policy decision, not a missing feature. The Portal returns error: "Remote desktop sessions cannot persist".
Workaround for GNOME servers:
Use native package deployment with Mutter Direct API strategy, which bypasses the Portal entirely and achieves zero-dialog operation through GNOME Mutter's D-Bus APIs.
Status: Mutter Direct strategy is fully implemented and ready for testing.
Use Case: Unattended Server
Scenario: Remote server running Ubuntu 24.04, accessed via RDP for administration
❌ Without Session Persistence
- • Server reboots → Click "Allow" dialog via monitor/KVM
- • Service restarts for updates → Click "Allow" dialog
- • Network reconnection → Click "Allow" dialog
- • Result: Manual intervention required constantly
✅ With Mutter Direct (Native Package)
- • Server reboots → Automatic session restoration
- • Service restarts → Automatic session restoration
- • Network reconnection → Automatic session restoration
- • Result: Zero manual intervention
Encrypted Credential Storage
Session tokens are encrypted using environment-adaptive storage:
Secret Portal → Host keyring
GNOME Keyring (Secret Service API)
KWallet (Secret Service API)
TPM 2.0 hardware binding
AES-256-GCM encrypted file
All methods use AES-256-GCM authenticated encryption. Master keys are never stored in plaintext.
How It Works
┌─────────────────┐ ┌──────────────────┐ ┌─────────────┐
│ Your Desktop │ │ lamco-rdp-server │ │ RDP Client │
│ (Wayland) │ │ │ │ │
├─────────────────┤ ├──────────────────┤ ├─────────────┤
│ │ │ │ │ │
│ XDG Portal ────┼────►│ Screen Capture │ │ Windows │
│ │ │ ▼ │ │ mstsc.exe │
│ PipeWire ──────┼────►│ H.264 Encode │────►│ │
│ │ │ ▼ │ │ FreeRDP │
│ Compositor ◄───┼─────│ Input Inject │◄────│ │
│ │ │ │ │ macOS RD │
└─────────────────┘ └──────────────────┘ └─────────────┘
Screen Capture: PipeWire streams your desktop via XDG ScreenCast portal
Encoding: Frames are encoded to H.264 (hardware or software)
Transmission: Encoded video streams to RDP client over TLS
Input: Client keyboard/mouse events are translated and injected via libei
System Requirements
Server (Linux)
Required:
- • Linux with Wayland compositor (GNOME, KDE, Sway, Hyprland, etc.)
- • Desktop environment must be running (user logged in)
- • PipeWire (screen capture)
- • XDG Desktop Portal support (v4+ recommended, v5 for full clipboard)
- • Compositor-specific portal backend (xdg-desktop-portal-gnome, -kde, or -wlr)
Note: Lamco RDP Server shares your existing desktop session. For headless multi-user VDI without desktop environment, see lamco-VDI (in development).
For Hardware Encoding:
- NVIDIA: GPU with NVENC, nvidia-driver, libnvidia-encode
- Intel: VA-API support, intel-media-va-driver or i965-va-driver
- AMD: VA-API support, mesa-va-drivers
Compatible RDP Clients
| Windows | Built-in Remote Desktop, FreeRDP |
| macOS | Microsoft Remote Desktop, FreeRDP |
| Linux | FreeRDP, Remmina |
| Android | Microsoft Remote Desktop |
| iOS | Microsoft Remote Desktop |
Technology Deep Dives
Video Encoding
H.264, AVC444, hardware acceleration, and codec selection
Learn more →Color Management
Color spaces, VUI signaling, and accurate color reproduction
Learn more →Performance
Adaptive FPS, latency optimization, and damage tracking
Learn more →Wayland Integration
XDG Portals, PipeWire, and compositor compatibility
Learn more →Pricing
Lamco RDP Server is free for personal use and small businesses.
Commercial licenses required only for organizations with more than 3 employees OR more than $1M annual revenue.
| Plan | Price | Servers |
|---|---|---|
| Monthly | $4.99/mo | 1 |
| Annual | $49/yr | 5 |
| Perpetual | $99 | 10 |
| Corporate | $599 | 100 |
| Service Provider | $2,999 | Unlimited |
Get Started
Open Source Foundation
Lamco RDP Server is built on open source infrastructure that we publish and maintain:
lamco-portal
XDG Desktop Portal integration
lamco-pipewire
PipeWire screen capture
lamco-video
Video frame processing
lamco-rdp-input
Input event translation
lamco-rdp-clipboard
Clipboard synchronization
These crates are MIT/Apache-2.0 dual-licensed and available for anyone building remote desktop infrastructure.
View All Open Source →License
Lamco RDP Server is licensed under the Business Source License 1.1.
Free Use
Personal use, non-profits, small businesses (≤3 employees OR <$1M revenue)
Commercial Use
License required for larger organizations (>3 employees OR >$1M revenue)
Open Source (2028)
Converts to Apache-2.0 on December 31, 2028
What's Next?
We're actively developing Lamco RDP Server based on user feedback. Features under consideration:
Audio Playback (RDPSND)
Stream system audio to client
Microphone Input
Bidirectional audio for calls
Multi-Monitor Improvements
Dynamic layout changes
Drive Redirection
Access client drives from server
Have a feature request? We want to hear from you.