Wayland
2026-03-04
Edited: 2026-03-04
Some Wayland notes for me
Design and Terminology
Seats are generally input devices: mices, touchscreens, touchpads, etc...
The Wayland Compositor manages and dispatches input events from seats to Wayland Clients. The Compositor also renders and places the windows onto the screen, a process called compositing.
Hardware and Kernel
Hardware can only be accessed by the kernel:
- DRM (direct rendering manager) is used to issue commands to the GPU.
- KMS (kernel mode setting) is used to query for these devices.
- evdev abstracts access to input devices
DRM:
- /dev/dri/card*: priviledged actions like modesetting
- /dev/dri/render*: unpriviledged actions like rendering
evdev:
input events through /dev/input/event*
Userspace
DRM -> libdrm Mesa -> OpenGL, Vulkan, and GBM (Generic Buffer Management) libinput -> evdev (requires priviledged access) (e)udev -> enumeration and reporting of new devices xkbcommon -> scancodes into key "symbols" and state machine for modifiers pixman -> pixel manipulation (buffers, math, etc...) libwayland -> implementation of wayland protocol and more...