_NET_SUPPORTING_WM_CHECK
O aperto de mão que permite a um programa decidir se há mesmo um gerenciador de janelas compatível com EWMH em execução, sem confiar em propriedades que um já morto deixou para trás.
A janela raiz sobrevive ao gerenciador de janelas. Tudo o que ele escreveu ali — _NET_SUPPORTED, _NET_CLIENT_LIST, _NET_CURRENT_DESKTOP — continua depois de um travamento e parece tão válido quanto antes. A resposta do EWMH é uma testemunha: o gerenciador cria uma pequena janela-filha da raiz, nunca mapeada, e define _NET_SUPPORTING_WM_CHECK em ambas, cada uma contendo o ID da filha. Um programa que quer saber o estado lê a propriedade na raiz, segue o ID e confere se a filha existe e aponta de volta para si mesma. Se o gerenciador morre, as janelas dele somem junto com a conexão, a cadeia se rompe e o valor velho na raiz é desmascarado como lixo.
A janela-filha também carrega _NET_WM_NAME com o nome do gerenciador, e é assim que wmctrl -m e vários scripts sabem se estão falando com Openbox, KWin ou Mutter. Ao lado dela, na raiz, fica _NET_SUPPORTED: a lista de todos os átomos _NET_ que o gerenciador entende, para que um programa possa perguntar antes de pedir tela cheia ou um strut, em vez de enviar e torcer. GTK e Qt fazem a verificação na inicialização e guardam a resposta em cache. O padrão veio do _WIN_SUPPORTING_WM_CHECK do GNOME em 1998, e supera a seleção WM_Sn, ortodoxa no ICCCM, em um único ponto: diz o que o gerenciador sabe fazer, e não apenas que ele existe.