Hey everyone,
I’ve been spending some time with zig-wayland lately. While the bindings themselves are great (big thanks to ifreund and contributors), the amount of boilerplate required just to get a basic xdg_toplevel up and running feels pretty heavy.
Coming from Rust, I really miss what smithay-client-toolkit (SCTK) does. It abstracts away the repetitive negotiation logic so you can just focus on drawing a window.
I’m seriously considering building a Zig equivalent. It would sit on top of zig-wayland and handle the “boring” stuff: dynamic registry handling, output scaling, and xdg_shell state.
But before I commit the time, I wanted to make sure I’m not misreading the ecosystem:
-
Is the “raw” approach actually preferred? I know the Zig ethos leans heavily toward “no hidden control flow.” If I make a library that manages the
wl_registryloop and seat capabilities for you, is that too much magic? Do you guys prefer manually handling the globals to keep full control? -
Why doesn’t this exist yet? I’ve looked at projects like
shimizu(and looked throughmach’s source), but there doesn’t seem to be a standalone, “batteries-included” client lib that everyone uses. Is this because previous attempts hit a wall, or just because everyone prefers rolling their own implementation?
Basically, if I build this to reduce friction, is it something you’d actually use, or is the complexity of an abstraction layer not worth it for you?
Thanks.