Hyprland (Wayland) RDP

Hyprland is a wlroots-based compositor with no built-in RDP server. lamco-rdp-server gives it standard RDP: screen capture via the wlroots capture protocols and input via the wlroots virtual-input protocols, the same binary that runs on GNOME, KDE, and sway.

Install

Native or Flatpak (CE). On Hyprland the server captures the screen directly through the wlroots wlr-screencopy protocol (the same wlr-direct path it uses on sway), so there is no portal ScreenCast dialog. Verify:

lamco-rdp-server --show-capabilities

Minimal config

~/.config/lamco-rdp-server/config.toml:

[server]
# Dual-stack by default; use "0.0.0.0:3389" only to force IPv4-only.
listen_addr = "[::]:3389"

[security]
tls = true

[video]
codec = "auto"

Connect

Dual-stack by default (IPv4 + IPv6). Hostname or explicit address (IPv6 in brackets):

  • Windows: mstsc.exe → host:3389 (or [2001:db8::10]:3389).
  • Linux: Remmina, or xfreerdp /v:host:3389 /u:USER.

Hyprland specifics (current in 1.4.5)

  • Capture: wlr-screencopy (wlr-direct), the same capture path used on sway. Hyprland also advertises ext-image-copy-capture-v1, but that handshake does not complete for the server, so the server uses the guaranteed wlr-screencopy path.
  • Input: the wlroots virtual keyboard/pointer protocols (zwp_virtual_keyboard_v1, zwlr_virtual_pointer_v1); confirmed working live.
  • Clipboard: wlr-data-control / ext-data-control (round-trip verified).
  • Dynamic resolution. A client-initiated resize switches the first enabled output to a custom mode through zwlr_output_management_v1, so the physical output changes resolution instead of the server only capturing a scaled region. Gated by display.resize_drives_output_mode (on by default) and requires display.output_management. Best-effort: the first enabled head is the target, not necessarily the one being captured.
  • Capture requests are paced to the higher of video.target_fps and performance.adaptive_fps.max_fps, rather than re-requesting the instant the previous frame lands. wayfire benefits most.
  • Unattended access recognises ext-image-copy-capture-v1 as a dialog-free capture path (Jay, labwc, phoc, Mir, Wayfire 0.11 and later).
  • Unicode typing works on the portal-generic path through keysym injection. wlr-direct still cannot inject keysyms, because zwp_virtual_keyboard_v1 has no request for it.
  • Verified on Hyprland 0.55.4 (and earlier 0.54.x): native connect, EGFX video, input, and clipboard all pass.

Troubleshooting

SymptomCauseFix
Connects, then black screenNo H.264 encoder, or capture/EGFX not started--show-capabilities; install Cisco OpenH264 for software H.264 (see Video Encoding), or use a GPU (VA-API)
Choppy or variable frame rateNo H.264 encoder, so the session runs the bandwidth-bound uncompressed fallbackInstall Cisco OpenH264 (see Video Encoding) or use a GPU (VA-API) for hardware H.264; the server adapts FPS to the link
Input does nothingVirtual-input protocols unavailableConfirm the compositor advertises the wlroots virtual keyboard/pointer protocols

See also: Installation, Configuration, Security, Video Encoding, the Platform Compatibility matrix, and the sibling guides for GNOME/Mutter, KDE/KWin, sway/wlroots, and COSMIC.