by jchw | 2025-08-09 13:08:48+00:00
> What is relevant is that, presumably, Windows and Mac and X11 users of Kicad use this functionality.

Windows and Mac and X11 users do not praise KiCAD for its ability to absolutely position the cursor. Windows and Mac and X11 users praise KiCAD for having a nice UX. You can definitely implement features like infinite panning in today's Wayland compositors, you just can't do it by absolutely setting the cursor position.

> The onus is on the Wayland team to justify the decision to take away a feature currently in use, not on the user base to justify switching to another system.

This is a genuinely cancerous mentality. When you design a new API, "the old API had a function that does this" is not a valid justification. If you can't find another justification for why the function should exist, it means that it shouldn't. That's what designing from first principle looks like. I have actual reasons why the old functionality (getting/setting the absolute cursor position) is not an API that I want, too, but that's not even the point. API functionality should be able to stand on its own and justify itself. If you can't start on a completely clean slate, why even bother trying to design a new API in the first place?

It doesn't matter if Windows, macOS, X11, Haiku, BeOS, SkyOS and TempleOS all provide this functionality, that's not a good justification, that is just argumentum ad populum. It is a useful API primitive, because it can be used to implement other useful things, and a ubiquitous API primitive, but that doesn't mean it's a good API primitive. On the contrary, most of these desktop systems were designed a long time ago, and now modern OSes are actually having to come up with ways to carefully limit a lot of these sorts of very powerful legacy APIs because they can lead to security and privacy issues. As an end user and computer owner, I don't want random applications running on my desktop to be able to get or set the absolute cursor position on screen, especially when the window is not focused. And if I don't want that, then the next obvious question is, does something like KiCAD truly need that? Of course not. Applications need primitives that can implement the controls and UI that they want, but you don't just get to decide what those primitives are, as an application. As an application, you get to deal with the primitives that you're given, because by definition, that's literally the job of an application developer. And when those primitives prove insufficient to implement some UI, then we can discuss how to fix it, but the answer isn't "this old API just let me get/set the global cursor position so can I have that?" And if you don't like some system you don't have to support it. But Apple is a complete and utter dickhole to application developers, requiring all kinds of dumb signing bullshit and pushing users to huge proprietary APIs like Metal, and yet open source projects are happy to sink plenty of developer hours (and often money) into it anyways, even though its desktop marketshare is only somewhat more impressive than Linux anyway. So forgive me if I don't shed a tear because it required a bit more work to do something in Wayland than it did elsewhere.

And yes, I know: you can come up with an application that really truly actually does need this. There are a handful, like automation software, or a remote desktop server. Actually though, pretty much all of the modern Wayland desktops support being able to get or set the absolute cursor position for that use case, it's just that it will usually require a permission prompt, at least the first time you use it. (There are some exceptions. wlroots/SwayWM doesn't require a permission prompt for this, the functionality is exposed as long as applications are not sandboxed.)

Application developers have developed this sense of ownership over the desktop that has become very annoying. No. I want my desktop environment to act as the owner of my desktop, the same way I want my window manager to control the management and positioning of my windows. Your applications just get to live in that world, the way that web pages get to live in a web browser.

Love it or don't, Wayland exposing higher level APIs for things that used to be implemented by application developers using lower level APIs is a step in the right direction for higher quality desktops and for user's control over their own desktops.