xdg-shell
Waylandのサーフェスを実際の「ウィンドウ」にするプロトコル。タイトル、最大化、フルスクリーン、サイズ交渉、ポップアップメニューを扱い、貧弱だったコアのwl_shellに取って代わった。
Waylandのコアが知っているのはサーフェス、つまりピクセルのバッファだけだ。タイトルバーを持つか、最小化できるかは拡張が決める。最初の試みである2012年のWayland 1.0のwl_shellは、Weston自身の必要すら満たさなかった。2013年頃にGNOMEとKDEがWayland対応を始めると、xdg_shellがゼロから設計し直され、不安定版を重ねて2017年末にwayland-protocolsで安定版となった。
オブジェクトは三つ。入口のxdg_wm_base、共通基盤のxdg_surface、そしてロールとして、アプリ窓のxdg_toplevelか、xdg_positionerで親に対して配置するメニューやツールチップ用のxdg_popupを選ぶ。要はハンドシェイクだ。コンポジターがconfigureでサイズと状態を提案し、クライアントはack_configureで応じて一致するバッファをコミットする。中途半端な状態の窓が描かれることはない。X側の対応物はICCCMとEWMHで、ウィンドウプロパティに散らばり、ハンドシェイクはない。