How I fixed a silent hang in the XDG Desktop Portal and turned it into an npm package
The article discusses a solution to a silent hang issue encountered while developing an Electron app for screen sharing on Linux using Wayland. The author explains the challenges posed by Wayland's input control restrictions and how they implemented a workaround. Ultimately, the solution was packaged into an npm module called 'wayland-input' for easier use by other developers.
- ▪The author was building an Electron app for local network screen sharing on Linux.
- ▪Wayland's design prevents direct input injection, requiring user permission through the XDG Desktop Portal.
- ▪A race condition caused the app to hang due to asynchronous responses from portal calls.
Opening excerpt (first ~120 words) tap to expand
try { if(localStorage) { let currentUser = localStorage.getItem('current_user'); if (currentUser) { currentUser = JSON.parse(currentUser); if (currentUser.id === 3966082) { document.getElementById('article-show-container').classList.add('current-user-is-article-author'); } } } } catch (e) { console.error(e); } ABDOURAHMAN MOHAMED Posted on Jun 3 How I fixed a silent hang in the XDG Desktop Portal and turned it into an npm package #javascript #linux #npm #showdev 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.
…
Excerpt limited to ~120 words for fair-use compliance. The full article is at DEV.to (Top).