I was building Parallel — an Electron app for local network screen sharing on Linux. No server, no account, just WebRTC and mDNS between two machines on the same WiFi.
Everything worked until I tried to add remote input control on Wayland.
The problem with Wayland
The X11 display protocol allowed apps to inject input directly. Wayland was designed to prevent this — no app can touch the input system without going through the XDG Desktop Portal RemoteDesktop interface, which requires the user to explicitly grant permission.
So I implemented the portal workflow. Three calls: CreateSession, SelectDevices, Start. After the user clicks Allow on the dialog, you can inject input freely.






