rbreaves / kinto

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

Wayland/X11 support? #420

Open tommythorn opened 3 years ago

tommythorn commented 3 years ago

Describe the bug Running an essentially stock Ubuntu 21.04 (beta), kinto's setup.py complains

Failed to get session path: Caller does not belong to any known session.
You are not using x11 [sic], please logout and back in using x11[sic]/Xorg

(It's X11)

Unfortunately, there's no "cog wheel" in my login screen so there's no immediately obvious way to do that.

If I understand it correctly the issue is that Kinto doesn't work with the Wayland X server, however it seems Ubuntu is increasingly deprecating the Xorg option, so Kinto will thus cease to be an option.

Expected behavior Well, obviously, work.

Install Type: Bare Metal Distro: Ubuntu 21.04 (Hirsute Hippo) (beta, but fully up-to-date) DE: Gnome (it seems) Branch: master Commit: 4980c4a35ea7735e4f4a1e8a2f6e45b6d1ea7603

Logs and status if relevant N/A

rbreaves commented 3 years ago

The work to bring Wayland compatibility to Kinto is at the forefront of my mind - but it will need to be added to xkeysnail as that is what Kinto uses to handle remappings, my own fork of xkeysnail in actuality.

If users would like to engage with that conversation on over in this thread https://github.com/mooz/xkeysnail/issues/108 then I will be more than happy to collaborate with others to bring Wayland support sooner rather than later. It will be more piecemeal, dependent on the DE you use rather than Wayland itself though, so I would expect to be targeting the most popular DEs that support Wayland first.

xpusostomos commented 3 years ago

@tommythorn At least for me... the cog wheel appears after you click on the login field.

njelich commented 3 years ago

Do you think this would be useful? https://github.com/arnarg/waybind or https://github.com/snyball/Hawck

rbreaves commented 3 years ago

Do you think this would be useful? https://github.com/arnarg/waybind or https://github.com/snyball/Hawck

Not really, spoke w/ at least one of the authors already & it’s the same issue we all have - there’s no universal way to query the active app under Wayland & no one wants to take the time to write a wrapper or something to interface w/ all the DEs to get the active app.

Kinto via xkeysnail remaps just fine on Wayland - but it can’t dynamically change the keymap based on the app or app type until someone fixes the app detection.

I have some initial work done for Gnome & KDE & gnome was sketchy imo. KDE was more solid but still.. not liking where things are at atm.

Atemu commented 2 years ago

It doesn't seem like there is a native wayland method of achieving this.

Perhaps you could use a low-lever remapper in a dynamic manner where a daemon would listen to wlr-foreign-toplevel-management and use IPC to dictate key mappings to the low-level remapper dynamically.
I don't know whether any one is capable of being configured dynamically via IPC but it doesn't sound impossible and doesn't require standards.

There would be a very slight delay after switching I'd imagine but I highly doubt you could notice.

geofflittle commented 2 years ago

I'm on Ubuntu 22.04 and following the install instructions at [1], repro'd here:

/bin/bash -c "$(wget -qO- https://raw.githubusercontent.com/rbreaves/kinto/HEAD/install/linux.sh || curl -fsSL https://raw.githubusercontent.com/rbreaves/kinto/HEAD/install/linux.sh)"

When I paste the above command into my terminal I receive the error

...
Failed to get session path: Caller does not belong to any known session.
You are not using x11, please logout and back in using x11/Xorg

[1] - Quick install instructions: https://github.com/rbreaves/kinto#quick-install-method

rbreaves commented 2 years ago

When you logout there will be a small gear icon in the bottom right of the login screen - switch to x11/xorg there.

geofflittle commented 2 years ago

@rbreaves Selecting x11 from the gear menu at login solved my issue. Thanks!

joshgoebel commented 2 years ago

where a daemon would listen to wlr-foreign-toplevel-management

This is interesting, but it seems to only talk about visibility - NOT input focus...

This event is emitted whenever the toplevel becomes visible on the given output.

Unless there is a lot more implied by "toplevel"...

cphoward commented 10 months ago

@geofflittle Were you able to get it installed? I've encountered the same problem on install with Ubuntu 22.04.3 LTS.