rbreaves / kinto

Mac-style shortcut keys for Linux & Windows.
http://kinto.sh
GNU General Public License v2.0
4.24k stars 212 forks source link

X11 #789

Open hexplor opened 1 year ago

hexplor commented 1 year ago

First of all, truly amazing, extraordinary and useful work. Thank you. Short question. Any chance for using that in Wayland (Ubuntu). Right now, I'm switching to X11 on login but Wayland is much snappier on Ubuntu. Thanks for your work.

RedBearAK commented 1 year ago

@hexplor

I can say that there is a very good chance Kinto can work with Wayland, because I was able to make a completely working branch of keyszer that functions in Wayland, and allowed me to use a Kinto config. But there are many caveats with what I came up with. Lots of extra dependencies.

The situation in Wayland is much different from X11. The solution I came up with only works in GNOME (so far), and only after you install one of two known GNOME Shell extensions (Xremap or "Window Calls Extended") that help get the window attributes to enable the app-specific keymaps. The extensions are required to get the window class and title/name attributes, then a new module in keyszer can talk to the extensions via D-Bus. There is no way that I could find to get this information directly from the Wayland display server.

The keyszer branch for Wayland that I made is technically working, but it's a big mess and will never be part of keyszer in its current form. There needs to be a more generic architecture to allow keyszer to be told to use a specific "provider" of the window attributes, rather than just being tied directly to the module that gets the X11 window attributes. It will take some extensive work.

All that I've shown with the proof of concept branch is that it will be possible to support Wayland+GNOME+extensions, and maybe Wayland+sway at some point. It should also theoretically be possible to pull the same kind of information using a KWin script in KDE Plasma, but I know very little about how to do that. Outside of those limitations, Wayland itself will have to gain the ability to provide access to the relevant window attributes. There is a chance that wlroots will have something to do with this, and maybe this will all be much easier in the future.

Anyone who is good with Python, and might know how to turn the existing xorg module into a more generic class that can be extended more easily to other types of window attribute providers, might want to take a look at what the branch is doing.

https://github.com/joshgoebel/keyszer/pull/136

If you want to actually attempt to use the branch, you'll need a Kinto config designed to work with keyszer, like the ones posted here:

https://github.com/rbreaves/kinto/pull/750

And you'll need the ability to get through installing all the native packages and pip packages that make it work. That will vary significantly depending on which distro you're using.