xdg-shell
Il protocollo Wayland che trasforma una superficie in una vera finestra — titolo, massimizzazione, schermo intero, negoziazione delle dimensioni, menu popup — al posto dello scarno wl_shell del protocollo di base.
Il nucleo di Wayland sa soltanto che cos'è una superficie: un buffer di pixel. Se abbia una barra del titolo, se possa essere ridotta a icona o abbia un posto sullo schermo lo decide un'estensione, e il primo tentativo, wl_shell in Wayland 1.0 del 2012, copriva a malapena le esigenze di Weston. Quando GNOME e KDE hanno iniziato a costruire il supporto Wayland, intorno al 2013, xdg_shell è stato riprogettato da zero, con Jasper St. Pierre, Rafael Antognolli e Kristian Høgsberg tra gli autori; ha attraversato una serie di versioni instabili ed è diventato stabile in wayland-protocols alla fine del 2017. Il nome porta il consueto prefisso xdg di freedesktop.org, e «shell» indica la shell del desktop, non la riga di comando.
Il protocollo offre tre oggetti. xdg_wm_base è il punto d'ingresso globale del compositor, xdg_surface la base comune, e poi il client sceglie un ruolo: xdg_toplevel per una finestra di applicazione con app_id, titolo, dimensioni minima e massima, massimizzazione, schermo intero, riduzione a icona e spostamento o ridimensionamento interattivi, oppure xdg_popup per menu e tooltip posizionati rispetto a un genitore tramite un xdg_positioner. L'idea chiave è la stretta di mano: il compositor propone dimensioni e stato in un evento configure, il client risponde con ack_configure ed effettua il commit di un buffer coerente, così una finestra non viene mai disegnata in uno stato applicato a metà. L'equivalente in X è ICCCM più EWMH — sparpagliati tra le proprietà delle finestre, senza alcuna stretta di mano.