pop-os / xdg-desktop-portal-cosmic

GNU General Public License v3.0
37 stars 35 forks source link

REQ: add org.freedesktop.portal.RemoteDesktop portal support #23

Open Quackdoc opened 8 months ago

Quackdoc commented 8 months ago

i realize this is fairly low priority, especially for its intended use case. however, this portal also allows kde connect to have input through its virtual keyboard and mouse. this is actually fairly important for a couple reasons, but the largest one for me personally is it allows me to use my phone as a input device, which helps a lot with my RSI. So it does have some accessibility benefits as well as virtual and remote desktop.

ids1024 commented 8 months ago

There is a plan for this, at least. https://github.com/ids1024/reis has a Rust implementation of the libei protcol. That needs to be integrated into the compositor, then the remote desktop portal can be added.

Though when I looked for things that use the portal, it seemed like the vnc and rdp implementations for wlroots/Gnome/KDE all require DE specific APIs, and as far as I could tell there isn't currently a vnc implementation that just uses xdg desktop portals.

Not sure what KDE connect requires.

quexten commented 7 months ago

Not sure what KDE connect requires.

KDE connect uses remotedesktop portal for injecting input https://github.com/KDE/kdeconnect-kde/blob/87a33d12936f2a3c58e306564ce78b0caadfa001/plugins/mousepad/waylandremoteinput.cpp#L63 , so any interfaces besides the pipewire/screencast stuff are required.

Another tool that seemingly uses the portal is the remote desktop software RustDesk: https://github.com/rustdesk/rustdesk/blob/3f7244f23f94e3d974cee86f81cd3f6d2673655d/libs/scrap/src/wayland/remote_desktop_portal.rs#L8

Finally, for auto-typing of passwords, my project https://github.com/quexten/goldwarden uses the portal too (hence I checked this thread).

ids1024 commented 7 months ago

I assumed KDE Connect was more KDE-specific, but I guess the documentation emphasizes using standards that work across desktops. Which is great! Now that the Wayland ecosystem is standards for these things. I've only used it with gsconnect, which re-implements KDE Connect in a Gnome Shell extension.

So yeah, I guess KDE Connect and Rustdesk are the things to test this with. As well as Input Leap.

For keyboard emulation, wtype currently works, using the zwp_virtual_keyboard_v1 protocol. But libei is probably overall a better solution for that.

PedroHLC commented 7 months ago

Another good example, using both RemoteDesktop and InputCapture (and ConnectToEIS) is https://github.com/input-leap/input-leap -- the only good working implementation so far is gnome's portal.

Edit: https://github.com/feschber/lan-mouse supports more methods and is overall more interesting.

ids1024 commented 5 months ago

There's still work to properly integrate ei into smithay and cosmic-comp, but https://github.com/Smithay/smithay/pull/1388 has a rough prototype.