zig-wayland-native

A Wayland client written in Zig, with no libwayland. The documentation is generated from the doc comments, one bundle per module; each module depends only on the one above it, and present is built against a consumer's own bindings.

scanner
Reads Wayland protocol XML and writes Zig bindings for it. Depends on zxml.
protocol
The wire format and the object bookkeeping, with no I/O: bytes and file descriptors in, events out. Depends on nothing but the standard library.
client
The socket: connecting, sending and receiving with file descriptors, and dispatching events to listeners. Depends on protocol; Linux only.
present
Buffers in shared memory or dma-bufs, a presenter that puts them on a surface at the compositor's pace with explicit sync if asked, and linux-dmabuf feedback. Depends on client and the generated bindings; Linux only.