So here's something pretty cool I wrote ≈ 2 years ago.
A toy toolkit in C, using #Wayland + Cairo, inspired by #GTK 3. No GObject or overly fancy OOP, no pervasive boxing either.
It can do windowing (with CSD, resizing and proper cursors), boxes (widgets that multiplex several child widgets), buttons (render a border, emit a callback when clicked) and labels (render text). Widgets can define their sizing constraints (min width, min height) & it's propagated through the tree.
Not much else.