immense / Remotely

A remote control and remote scripting solution, built with .NET 8, Blazor, and SignalR.
GNU General Public License v3.0
4.43k stars 1.61k forks source link

Wayland Support on Linux #468

Open dbrandonjohnson opened 2 years ago

dbrandonjohnson commented 2 years ago

The client does not work with systems that are using Wayland. Wayland is now the default display server on all the major Linux distributions such as RHEL Workstation, Fedora Workstation, and Ubuntu.

bitbound commented 2 years ago

I personally don't have time for this work. But if anyone wants to pick this up, there needs to be Wayland-specific implementations of IScreenCapturer and IKeyboardMouseInput.

For X11, these were accomplished by p/invoking LibX11, LibXtst, and LibXrandr. Similar libraries will need to be identified in Wayland and C#/.NET interop classes created.

It may also be possible to implement these interfaces through calling external process (example), though I'm not sure how performant that would be. Anything's better than nothing, though.

Gaming4LifeDE commented 2 years ago

I found this (source code from a screen recorder). Maybe it helps? https://github.com/amikha1lov/RecApp/blob/585b71ad9eb2bca7c34ccc108d9dded2225439de/src/recording.py

Dremor commented 1 year ago

I was looking at Remotely for a pet project, and I have to admit that this issue is quite blocking. Every disto I tried uses Wayland now by default, and unless I switch back to X11 everywhere (with all its flaws), I'm unable to use Remotely. Unfortunately, while being a .NET dev, I don't have any knowledge in either Wayland or X11. Still, I'll try to take a look, but it will take a loooooong while.

bmcgonag commented 5 months ago

I'm willing to pay a bounty to have this resolved. $1000 US if someone can make Wayland support work properly for Linux desktops. Not sure where I can post this as a bounty, so any help is appreciated on that front.

  1. Add support for Wayland on Linux.
  2. Make a PR with your changes
  3. @bitbound approves and merges your changes.
  4. @bitbound verifies it has been completed and by whom.
  5. You get paid.