Remix.run Logo
dzogchen 17 hours ago

It is a damn shame that tools like xdotool (automation) and sxhkd (global keybinds) are impossible to recreate under Wayland.

craftkiller 17 hours ago | parent | next [-]

Not impossible, it just needs to be implemented at a different layer. The compositor needs to expose some API for global hotkeys. For example, I found this with ~2 minutes of Googling: https://wayland.app/protocols/hyprland-global-shortcuts-v1

Blackthorn 16 hours ago | parent | next [-]

> Not impossible, it just needs to be implemented at a different layer. The compositor needs to expose some API for global hotkeys.

That's a big problem. When things become an optional extension for a compositor, that means you cannot reliably deploy something that depends on it to Wayland.

At this moment, things in the wild are coupling themselves to libwayland-client and in practice ossifying its ABI as a standard no matter what the wayland orgs say about it.

seba_dos1 16 hours ago | parent [-]

xdg-shell is an optional extension for a compositor and yet you can reliably deploy things that depend on it. You're barking at the wrong tree.

MarsIronPI 15 hours ago | parent [-]

OK so why wasn't this implemented in the first place? For that matter, why does our reinvented wheel have fundamental limitations?

seba_dos1 15 hours ago | parent [-]

It's not a core protocol's concern and the fact that it's being successfully implemented proves that there are no fundamental limitations there.

I'm not happy with how the collaboration and planning between various parties involved went over years and I do believe that a lot of these adoption pains are fully self-inflicted, but that has absolutely nothing to do with Wayland's technical design.

incrudible 12 hours ago | parent [-]

You can’t effectively dismiss a critique of something missing from the core protocol by declaring it to not be its concern.

seba_dos1 9 hours ago | parent | next [-]

I can, I just did. It's just not a thing that should be there at all, and it's obvious once you take a second to look at what's actually in it and why (spoiler: there's too much in it and not much can be done about it now).

braiamp 9 hours ago | parent | prev [-]

Why should a display manager concern itself with routing keystrokes to every application.

MarsIronPI 8 hours ago | parent [-]

Why should a display manager also have to implement window management? (I know this is a separate complaint, but I still think it's a valid one.)

diath 17 hours ago | parent | prev | next [-]

And that's a problem, now instead of knowing that something just works in the WM you're using, you have to cross-reference a matrix of features for basic tasks across different WMs because the bare minimum features are not found in the core protocols. Nothing is standardized, it's just a pile of different WMs developing their own sets of custom protocols.

vasvir 11 hours ago | parent [-]

like the web and we saw how that went... Oh wait!

lelanthran 15 hours ago | parent | prev [-]

> Not impossible, it just needs to be implemented at a different layer.

Do you mean the Window Manager layer?

That sounds like a different way of saying "impossible".

In X11 I can create an automation tool that works regardless of the underlying WM, or even if there isn't an underlying WM.

Can't do that with Wayland.

craftkiller 10 hours ago | parent [-]

Currently there isn't really a "window manager" layer. Just like the automation / global hotkeys mentioned above, if you wanted a separate "window manager" your compositor would need to implement a protocol to expose window management. It looks like river is taking a stab at it with their river-window-management-v1 protocol: https://isaacfreund.com/blog/river-window-management/ . If they're successful we might see that protocol adopted by the other compositors.

zwarag 16 hours ago | parent | prev | next [-]

Not only that. A11y is also quite hard. Tools that are simple to implement thanks to good a11y apis - for example on macos, the tool rcmd or homerow - are super hard to do in Wayland.

j16sdiz 17 hours ago | parent | prev | next [-]

Not literally impossible. You just need to write your own composer!

Krutonium 17 hours ago | parent | prev | next [-]

wdotool exists, and global hotkeys are a thing under wayland, but is desktop dependent. KDE allows it by default, Gnome can be made to do it as well with an extension.

flexagoon 17 hours ago | parent | prev | next [-]

ydotool exists

https://github.com/ReimuNotMoe/ydotool

dzogchen 16 hours ago | parent [-]

The name is pretty similar, but looks like there is where the similarities end.

James_K 16 hours ago | parent | prev [-]

I'm using Sway right now and I have key binds. Not sure why you think that's impossible.

vidarh 16 hours ago | parent [-]

Th point is the decoupling. sxkhd runs irrespective of wm and means your en can optionally choose not to handle key bindings at all. With Wayland you end up depending on whether or not and how your compositor supports it.

James_K 16 hours ago | parent [-]

How many keybings do you have and how often do you try new window managers? Compromising the security of the whole system just to save you a few `sed`s when writing some config files seems like a bad trade off.

vidarh 14 hours ago | parent | next [-]

There's no need to compromise the security of the whole system. A trivially safe option would have been to restrict the ability to acquire global keybindings to specific clients, and require the user to confirm either once or every time (or any other policy you'd prefer). An X server could do that without breaking anything.

This issue is typical of the thinking that went into Wayland: No consideration was made when Wayland was announced of the fact that there were far simpler ways of achieving the same level of security.

lelanthran 15 hours ago | parent | prev | next [-]

> Compromising the security of the whole system just to save you a few `sed`s when writing some config files seems like a bad trade off.

Those aren't the only two options. There's no need to compromise the entire system for everybody if the Wayland devs would agree to configuration that controls these things.

Then those of us who need stuff to work rgardless of WM would get stuff to work and the rest of the Wayland users can simply go with a WM that suits them.

ranger_danger 13 hours ago | parent | prev [-]

Imagine you wrote an application that supports global, unfocused keybinds (OBS is one popular example).

Instead of implementing it one way that works forever with any WM/DE (X11), now you must rely on each individual wayland compositor to implement one or more optional extensions correctly, and constantly deal with bug reports of people that are using unsupported or broken compositors.

James_K 9 hours ago | parent [-]

Or you could write portable software that doesn't rely on reading global input. OBS you give as an example, and it is a good one. They could simply register a D-Bus handler and provide a second binary that sends messages to the running instance. The software is more general in this way as it allows full programmatic control. A Sway user, for instance, could add

  bindsym $mod+r exec obs-control toggle-recording
to their configuration. What's more, they can do this in response to other system events. A user might wish to change the recording configuration of OBS in response to an application opening, and it now becomes possible to write a script which opens the application and applies the change.

If your disdain for desktop isolation is so great, you needn't even use D-Bus. Registering a simple UNIX socket that accepts commands would work equally well in this case.

What's really desired here is a standard way for programs to expose user-facing commands to the system, which is clearly not within the scope of the specification for a display server. The problem with X11 is that it has for a long time exposed too much unrelated functionality like this to the user, and so many apps have become reliant on this and developers have neglected the creation of portable ways to achieve these objectives. A new specification for display servers that excludes this harmful behaviour is a clear long-term positive.

vidarh 3 hours ago | parent | next [-]

This is an excellent description of why this is an awful situation.

It's extremely user hostile.

> The problem with X11 is that it has for a long time exposed too much unrelated functionality like this to the user

It's not "unrelated functionality". It's an entirely generic ability to listen to events that is available with Wayland as well, just with an added restriction.

ranger_danger 4 hours ago | parent | prev [-]

I'm not sure how any of that sidesteps the point of my comment, which was having to rely on many different wayland compositors all implementing hotkeys properly.

I don't think it's always practical or desired to move the hotkey support completely out of the program itself. Most users (especially consumer/nontechnical people such as many OBS users) are not willing to setup hotkeys through a third-party program to manually get it to control OBS externally... so I think it needs to support hotkeys internally, whether there is also control possible via an external socket/dbus/etc. or not.