COSMIC (Wayland) RDP
COSMIC (System76's Rust/Smithay desktop) is a working target on lamco-rdp-server 1.4.5.
On COSMIC 1.6 and later, video, keyboard, mouse, and clipboard all work out of the box
— no opt-in step needed. COSMIC 1.6 (2026-08-18) shipped EI protocol support
(cosmic-comp #2442) and a RemoteDesktop portal (xdg-desktop-portal-cosmic #317), so input now
routes through the same org.freedesktop.portal.RemoteDesktop + EIS path already used
on GNOME and KDE. Screen capture uses ext-image-copy-capture-v1 and clipboard uses
ext-data-control-v1, as before.
On COSMIC releases before 1.6, there is no RemoteDesktop portal and no
wlr-virtual-pointer (cosmic-comp #1350), so the server falls back to injecting the
mouse through the kernel's /dev/uinput as an interim,
application-owned path; keyboard and clipboard already worked the same way they do today. See the
opt-in section below if you're on an older COSMIC release.
What works today (1.4.5, COSMIC 1.6+)
| 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 | RemoteDesktop portal + EIS | Full, including Unicode |
| Mouse | RemoteDesktop portal + EIS | Works out of the box on COSMIC 1.6+, no opt-in step |
| Clipboard | ext-data-control-v1 (+ zwlr-data-control-v1) | Bidirectional, verified |
On COSMIC releases before 1.6, keyboard and clipboard use the same paths; mouse instead needs
the /dev/uinput opt-in step below.
The RemoteDesktop portal has landed. COSMIC 1.6 merged both blockers this
page used to track: EI protocol support (cosmic-comp #2442) and the RemoteDesktop portal
(xdg-desktop-portal-cosmic #317). input.input_protocol = "auto" resolves to libei
on COSMIC 1.6+, so mouse and keyboard route through the same portal-mediated EIS path as
GNOME/KDE, and the /dev/uinput fallback is no longer needed there. It stays in
place only for COSMIC releases before 1.6.
Enable the mouse: give the server /dev/uinput access (COSMIC before 1.6 only)
On COSMIC 1.6 and later the mouse works out of the box through the RemoteDesktop portal —
skip this section. On an older COSMIC release, mouse is the single feature that
wants /dev/uinput. 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.6)
COSMIC's input situation held at /dev/uinput through epoch 1.2.0,
then changed with epoch 1.6 (2026-08-18): the upstream chain this page tracked — cosmic-comp
#2442 and xdg-desktop-portal-cosmic #317 — merged, bringing up the standard
org.freedesktop.portal.RemoteDesktop + EIS path already used on GNOME/KDE. The server
routes input there automatically on 1.6+, with no COSMIC-specific code and no
/dev/uinput access needed. 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 (COSMIC before 1.6) | 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 |
| Mouse doesn't move on COSMIC 1.6+ | Not the uinput case above — check whether the RemoteDesktop portal is actually active in the session | Run lamco-rdp-server --show-capabilities and confirm it reports the RemoteDesktop portal/EIS path, not uinput |
| 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.