Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Linux setup

Verified on Arch Linux with Hyprland (Wayland). Other Wayland compositors and X11 compile and should work but are untested; please report what you find.

Wayland

How rdc talks to the compositor

NeedMechanismWorks on
Screen captureorg.freedesktop.portal.Screenshot via xdg-desktop-portal, falling back to wlr-screencopyGNOME, KDE, Hyprland, sway, river…
Mouse and keyboardwlr-virtual-pointer + zwp-virtual-keyboard protocolswlroots compositors (Hyprland, sway, river, labwc…)
Window list and focushyprctl when HYPRLAND_INSTANCE_SIGNATURE is setHyprland only
Clipboardwlr-data-controlwlroots compositors and KDE

GNOME and KDE do not implement the wlr virtual input protocols, so on those desktops rdc can take screenshots but cannot move the mouse or type yet. The input library rdc uses (enigo) has paths through the RemoteDesktop portal and libei, but rdc does not enable them; wiring and testing them is tracked as an issue. rdc doctor reports the session type and whether input initialised.

rdc pins exactly one input backend per session (Wayland when WAYLAND_DISPLAY is set, X11 otherwise) so events are not delivered twice to Xwayland applications.

Absolute pointer positioning under Wayland is expressed as a fraction of the first output’s mode, which rdc maps from logical desktop coordinates, so clicks land correctly on scaled displays (verified at 2× on Hyprland).

Packages

Runtime: a portal backend for your compositor (xdg-desktop-portal-hyprland, xdg-desktop-portal-gnome, xdg-desktop-portal-kde, or xdg-desktop-portal-wlr), PipeWire, and tailscaled running. Build dependencies are listed in Install.

X11

Capture and input go through xcb/x11rb. Window focus uses the generic xcap window list (no _NET_ACTIVE_WINDOW focus yet, so focus is unsupported on X11 for now).

Running

Put the allowlist in ~/.config/rdc/config.toml first (see Configuration); the service reads it from there.

rdc doctor
rdc serve                                  # foreground test
rdc service install                        # systemd --user unit dev.rdc.daemon.service
journalctl --user -u dev.rdc.daemon -f

The unit is wanted by graphical-session.target, so it starts with your desktop session and restarts on failure. It runs the binary from the path where you invoked service install; put rdc somewhere permanent first (~/.local/bin or /usr/local/bin).

Config lives at ~/.config/rdc/config.toml; see Configuration.

Tailscale

rdc uses the LocalAPI socket at /var/run/tailscale/tailscaled.sock. If your user can’t read it, rdc doctor shows the failure and rdc falls back to the tailscale CLI. On most distributions the socket is world-connectable for read-only calls like whois and status.