1.
Introduction
1.1.
High-level Wayland design
1.2.
Goals & target audience
1.3.
What's in the package
2.
Protocol design
2.1.
Wire protocol basics
2.2.
Interfaces, requests, events
2.3.
The high-level protocol
2.4.
Protocol design patterns
3.
libwayland in depth
3.1.
wayland-util primitives
3.2.
wayland-scanner
3.3.
Proxies & resources
3.4.
Interfaces & listeners
4.
The Wayland display
4.1.
Creating a display
4.2.
Incorporating an event loop
5.
Globals & the registry
5.1.
Binding to globals
5.2.
Registering globals
6.
Buffers & surfaces
6.1.
Using wl_compositor
6.2.
Shared memory buffers
6.3.
Linux dmabuf
6.4.
Surface roles
7.
XDG shell basics
7.1.
XDG surfaces
7.2.
Application windows
7.3.
Extended example code
8.
Surfaces in depth
8.1.
Surface lifecycle
8.2.
Frame callbacks
8.3.
Damaging surfaces
8.4.
Surface regions
8.5.
Subsurfaces
8.6.
High density surfaces (HiDPI)
9.
Seats: Handling input
9.1.
Pointer input
9.2.
XKB, briefly
9.3.
Keyboard input
9.4.
Touch input
9.5.
Expanding our example code
10.
XDG shell in depth
10.1.
Configuration & lifecycle
10.2.
Popups & parent windows
10.3.
Interactive move and resize
10.4.
Positioners
11.
Clipboard access
11.1.
Data offers
11.2.
Drag & drop
12.
Protocol extensions
12.1.
Accurate timing
12.2.
Pointer constraints
12.3.
Extended clipboard support
12.4.
Desktop shell components
12.5.
Miscellaneous extensions
12.6.
Writing new extensions
Acknowledgements
The Wayland Protocol
Popular protocol extensions