WM_PROTOCOLS
La propiedad ICCCM en la que un programa X enumera qué conversaciones está dispuesto a mantener con el gestor de ventanas —cierre, foco, ping—, de modo que todo lo que no haya declarado pueda hacerse sin preguntarle.
El protocolo X no tiene un canal propio del gestor de ventanas hacia el programa. El ICCCM lo resolvió con una lista: el cliente fija en su ventana de nivel superior la propiedad WM_PROTOCOLS, de tipo ATOM, y enumera los protocolos que entiende, con XSetWMProtocols en Xlib. El gestor de ventanas envía después un ClientMessage de tipo WM_PROTOCOLS cuyo primer campo de datos es el átomo del protocolo y el segundo una marca de tiempo. Es un sistema estrictamente voluntario: el cliente que no ha declarado nada no recibe nada, y el gestor recurre a lo que puede hacer por su cuenta.
El ICCCM definió tres. WM_DELETE_WINDOW hace que el botón de cerrar pregunte en vez de matar al cliente. WM_TAKE_FOCUS, combinado con el campo input de WM_HINTS, da lugar a los cuatro modelos de foco: No Input, Passive, Locally Active y Globally Active. WM_SAVE_YOURSELF fue un primer intento de gestión de sesiones que ICCCM 2.0 desaconsejó en 1994 en favor de XSMP. EWMH añadió más tarde _NET_WM_PING, donde el programa que no responde se da por colgado, y _NET_WM_SYNC_REQUEST, que le permite terminar de redibujar durante un cambio de tamaño antes de que el gestor muestre el siguiente fotograma. xprop muestra qué ha declarado cada ventana, lo que explica bastante sobre cómo reaccionan los viejos programas Motif a Alt+F4.