COSMIC (Wayland) RDP
COSMIC (System76's Rust/Smithay desktop) is a working target on lamco-rdp-server 1.4.4:
video, keyboard, and clipboard work out of the box, and mouse works after one opt-in
step. COSMIC exposes ext-image-copy-capture-v1 (capture),
zwp_virtual_keyboard (keyboard), and ext-data-control-v1 (clipboard), but
it does not implement wlr-virtual-pointer (cosmic-comp #1350), does
not offer wlr-screencopy (rejected, #560), and has no RemoteDesktop portal
yet. So the server captures and types through its portal-generic path and injects the
mouse through the kernel's /dev/uinput as an interim, application-owned path.
What works today (1.4.4)
| Capability | Path on COSMIC | Notes |
| Screen video | ext-image-copy-capture-v1 (portal-generic) | Real frames, no consent dialog. The native COSMIC ScreenCast portal node hands out 0 frames and is not used |
| Keyboard | zwp_virtual_keyboard | Full, including Unicode |
| Clipboard | ext-data-control-v1 (+ zwlr-data-control-v1) | Bidirectional, verified |
| Mouse | /dev/uinput (creates a lamco-rdp-pointer device) | Opt-in; see below. Without it the session is keyboard-only |
There is no libei/RemoteDesktop portal on COSMIC yet, so input does not go through libei here (unlike GNOME/KDE).
Enable the mouse: give the server /dev/uinput access (COSMIC-only, opt-in)
Mouse is the single feature that wants /dev/uinput, and only on
COSMIC. Video, keyboard, and clipboard all work without it; when it is missing the session simply
comes up keyboard-only and logs:
Grant access one of two ways (the uinput device node is built into most distro
kernels; if yours ships it as a module, load it first with sudo modprobe uinput):
- A udev rule (recommended, per-machine):
echo 'KERNEL=="uinput", GROUP="input", MODE="0660"' | sudo tee /etc/udev/rules.d/99-uinput.rules
sudo udevadm control --reload-rules && sudo udevadm trigger
sudo usermod -aG input "$USER" # then log out and back in - Or an existing ACL: some systems already grant the active login session
access via a
uaccessACL. Check withls -l /dev/uinput— a trailing+(e.g.crw-rw----+) means an ACL is present and no group change is needed.
Nothing else needs this: GNOME, KDE, and wlroots inject input through Wayland protocols and
never touch /dev/uinput.
COSMIC's evolving state (precise, as of epoch 1.2.0)
COSMIC's input situation did not change between epoch 1.0 and
1.2.0: uinput remains the COSMIC mouse path through 1.2.0. The standard
org.freedesktop.portal.RemoteDesktop + EIS path (already used on GNOME/KDE) will take
over once the upstream chain merges: Smithay #2073 (ei_text), cosmic-comp
#2442, and xdg-desktop-portal-cosmic #317 (all still open). When it lands, the server
routes input there automatically and the /dev/uinput path retires with no
COSMIC-specific code. COSMIC still moves quickly overall, so re-check
lamco-rdp-server --show-capabilities on your version.
Install
Native or Flatpak (CE). On COSMIC prefer the native package if
you need the mouse (the Flatpak sandbox complicates /dev/uinput access). Verify what
the running session exposes:
Minimal config
~/.config/lamco-rdp-server/config.toml:
# 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.
Troubleshooting
| Symptom | Cause | Fix |
| Video and keyboard work but the mouse doesn't move | Server can't open /dev/uinput (log: uinput pointer unavailable ... keyboard-only); COSMIC has no wlr-virtual-pointer | Grant /dev/uinput access (udev rule + input group, or a uaccess ACL); re-login |
| Black/blank screen | The native COSMIC ScreenCast portal node returns 0 frames | Nothing to do: the server uses ext-image-copy-capture automatically. Ensure an Encoding backend (--show-capabilities); install Cisco OpenH264 for software H.264 (see Video Encoding) |
| Clipboard text doesn't sync | ext-data-control-v1 unavailable in the running session | Confirm the COSMIC build advertises ext-data-control-v1 |
See also: Installation, Configuration, Security, Video Encoding, the Roadmap, the Platform Compatibility matrix, and the sibling guides for GNOME/Mutter, KDE/KWin, sway/wlroots, and Hyprland.