WM_PROTOCOLS
A propriedade do ICCCM em que um cliente X lista quais conversas aceita ter com o gerenciador de janelas — fechar, foco, ping — para que tudo o que ele não tiver assinado possa ser feito sem pedir licença.
O protocolo X não tem canal embutido do gerenciador de janelas para o cliente. O ICCCM resolveu isso com uma lista: o cliente define uma propriedade chamada WM_PROTOCOLS, do tipo ATOM, na sua janela de nível superior e enumera os protocolos que entende, via XSetWMProtocols no Xlib. O gerenciador de janelas então envia uma ClientMessage do tipo WM_PROTOCOLS, cujo primeiro campo de dados é o átomo do protocolo e o segundo é um timestamp. É estritamente opt-in: um cliente que não anunciou nada não recebe nada, e o gerenciador recorre ao que conseguir fazer por conta própria.
O ICCCM definiu três. O WM_DELETE_WINDOW faz o botão de fechar perguntar em vez de matar o cliente. O WM_TAKE_FOCUS, combinado com o campo input do WM_HINTS, produz os quatro modelos de foco: No Input, Passive, Locally Active e Globally Active. O WM_SAVE_YOURSELF foi uma primeira tentativa de gerenciamento de sessão que o ICCCM 2.0 declarou obsoleta em 1994 em favor do XSMP. O EWMH depois acrescentou o _NET_WM_PING, em que um cliente que não responde é dado como travado, e o _NET_WM_SYNC_REQUEST, que deixa o cliente terminar de repintar durante um redimensionamento antes de o gerenciador mostrar o próximo quadro. O xprop mostra o que uma dada janela assinou, o que explica boa parte de como os aplicativos Motif antigos reagem ao Alt+F4.