GitHub - rcarmo/wrdp: Experimental xrdp/sesman-like setup for Wayland-backed remote desktops · GitHub
/" data-turbo-transient="true" />
Skip to content
Type / to search
Sign in<br>Sign upAppearance settings
You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.
Dismiss alert
{{ message }}
rcarmo
wrdp
Public
Notifications<br>You must be signed in to change notification settings
Fork
Star<br>23
main
BranchesTags
Go to file
CodeOpen more actions menu
Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit
History<br>29 Commits<br>29 Commits
.github/workflows
.github/workflows
docs
docs
src
src
tools/rdp-compat
tools/rdp-compat
vendor/wrdp-compositor
vendor/wrdp-compositor
.gitignore
.gitignore
AGENTS.md
AGENTS.md
Cargo.lock
Cargo.lock
Cargo.toml
Cargo.toml
LICENSE
LICENSE
Makefile
Makefile
README.md
README.md
THIRD_PARTY.md
THIRD_PARTY.md
build.rs
build.rs
View all files
Repository files navigation
WRDP
WRDP is a single-port, multi-user RDP server for Linux servers running Wayland in headless mode.
It accepts an RDP connection, authenticates the user, starts or reuses that user's managed compositor session, applies the negotiated desktop size before capture, and sends display, input, audio and clipboard data through IronRDP.
Goals
One listener shared by multiple users.
One isolated desktop session per authenticated user.
Modern EGFX/H.264 display with a bitmap fallback.
Software encoding plus optional VA-API acceleration.
Clipboard, resize, audio and input support without exposing a host desktop session.
A small operational surface: wrdp, wrdp-sesman and wrdpctl.
WRDP is built for Linux hosts where the server owns the desktop sessions. It is not a remote-control layer for an already logged-in graphical session, an RDP client, or a domain controller.
Architecture
direct DMA-BUF/SHM capture<br>├── EGFX/H.264 or bitmap updates<br>├── ordered keyboard and pointer injection<br>├── PipeWire audio and clipboard">RDP client<br>│ TLS and RDP<br>wrdp<br>├── credential validation<br>├── IronRDP protocol and channel handling<br>├── in-process session manager<br>└── per-user session binding<br>managed Wayland compositor<br>├── negotiated output size -> direct DMA-BUF/SHM capture<br>├── EGFX/H.264 or bitmap updates<br>├── ordered keyboard and pointer injection<br>├── PipeWire audio and clipboard
IronRDP owns the wire protocol, capability exchange and dynamic-channel state machines. WRDP connects those events to authentication, session management, Wayland, PipeWire and encoding backends. Advanced Input owns mouse delivery while its channel is active, which prevents the overlapping core input path from injecting the same click twice.
Read docs/architecture.md for component boundaries, docs/compositor.md for the managed desktop contract, and docs/decisions/ for design decisions.
Installation and operation
The first public release is installed from source. The operator guide covers supported deployment, build and installation, configuration, TLS/PAM security, systemd socket activation, packaging, upgrades, rollback and troubleshooting.
Distribution packages are not published yet; package maintainers should follow the documented packaging contract and keep the daemon, bundled compositor, lockfile and pinned IronRDP revision together.
License
WRDP's Rust code is licensed under the MIT License. The bundled compositor is a modified labwc 0.8.3 derivative under GPL-2.0-only and is built as a separate program. IronRDP is Apache-2.0. See THIRD_PARTY.md for details.
About<br>Experimental xrdp/sesman-like setup for Wayland-backed remote desktops<br>Resources<br>Readme<br>MIT license<br>Activity<br>Stars<br>23 stars<br>Watchers<br>1 watching<br>Forks<br>0 forks<br>Report repository
Releases
Packages
Contributors
Languages
You can’t perform that action at this time.