WM_PROTOCOLS
La propriété ICCCM par laquelle un client X liste les échanges qu'il accepte d'avoir avec le gestionnaire de fenêtres — fermeture, focus, ping — de sorte que tout ce à quoi il ne s'est pas inscrit puisse être fait sans lui demander son avis.
Le protocole X n'offre aucun canal natif du gestionnaire de fenêtres vers le client. L'ICCCM a réglé la question par une liste : le client pose sur sa fenêtre de premier niveau une propriété nommée WM_PROTOCOLS, de type ATOM, et y énumère les protocoles qu'il comprend, via XSetWMProtocols en Xlib. Le gestionnaire de fenêtres envoie alors un ClientMessage de type WM_PROTOCOLS, dont le premier champ de données est l'atome du protocole et le second un horodatage. Le système est strictement opt-in : un client qui n'a rien annoncé ne reçoit rien, et le gestionnaire se rabat sur ce qu'il peut faire unilatéralement.
L'ICCCM en définissait trois. WM_DELETE_WINDOW fait que le bouton de fermeture demande poliment au lieu de tuer le client. WM_TAKE_FOCUS, combiné au champ input de WM_HINTS, donne les quatre modèles de focus : No Input, Passive, Locally Active et Globally Active. WM_SAVE_YOURSELF était une première tentative de gestion de session, jugée obsolète par l'ICCCM 2.0 en 1994 au profit de XSMP. L'EWMH a ensuite ajouté _NET_WM_PING, où un client qui ne répond pas est présumé bloqué, et _NET_WM_SYNC_REQUEST, qui laisse un client finir de se redessiner pendant un redimensionnement avant que le gestionnaire n'affiche l'image suivante. xprop montre à quoi une fenêtre donnée s'est inscrite, ce qui explique pas mal de choses sur la réaction des vieilles applications Motif à Alt+F4.