Hacker News new | ask | show | jobs
by nly 1969 days ago
These are dbus APIs though, not wayland protocol specifications that you can call with libwayland's RPC mechanism.

On the one hand this means you can support both X11 and Wayland with a single API from a client perspective, on the other you have to use DBus, which is horrendous to use (especially from statically typed languages).

It also doesn't seem to work on my XFCE/X11 desktop, which shows what fragmentation we have now.

3 comments

> DBus, which is horrendous [from] statically typed languages

Could you explain this? In my experience DBus provides you with a schema, the exposed DBus interface describes the callable methods, their arguments and types, readable properties, and signals.

Just like with SQL it's useful to create a layer that takes advantage of the statically typed powers of the language.

Usually there are tools that use introspection (or the XML introspection data) to generate "types" (ie. this layer).

https://crates.io/crates/dbus-codegen

Not all statically typed languages. Using it in QT is great, and using it in GTK in C is not more difficult than showing a window. I also recently came across zbus in rust (https://docs.rs/zbus/1.8.0/zbus/) and it looks like it’s similar dynamically typed languages. I’ve also heard good things about the Systemd implementation. In all of these situations, it’s far easier to use DBus than another Wayland protocol.
Yes exactly, it's always a big debate every time a new features is needed whereas it should be Wayland protocol or Dbus.

Gnome people push for everything Dbus, and many Wayland dev prefer to standardize over Wayland protocol.

It's kinda sad that the APIs are fragmented over two IPC solutions (unlike for eg on Android where everything goes through Binder IPC).

I think the overall the idea is : if it requires permission/sandbox -> Dbus, otherwise Wayland . But in practice there is a lot of disagreements.