_NET_WM_PID
A propriedade do EWMH em que o programa escreve o próprio ID de processo na janela, para o gerenciador de janelas matar o processo certo quando um ping fica sem resposta — uma autodeclaração que ninguém verifica.
O servidor X sabe muito pouco sobre o processo por trás de uma conexão, e a XKillClient apenas fecha a conexão, de modo que um programa travado continua vivo, só que sem janelas. Em 2000, o EWMH acrescentou então o _NET_WM_PID, um CARDINAL, às propriedades da janela de nível superior: o programa grava seu PID, e o gerenciador de janelas que queira recorrer ao SIGKILL depois de um _NET_WM_PING sem resposta o lê — depois de comparar o WM_CLIENT_MACHINE com o próprio nome de host, já que um PID de outra máquina é um número aleatório. GTK, Qt e xterm o definem sozinhos; programas Xt e Motif, não, e é por isso que o diálogo de forçar encerramento do KWin e do GNOME Shell às vezes não tem nada a oferecer. As ferramentas vieram a reboque: xprop _NET_WM_PID, xdotool getwindowpid e wmctrl -lp fazem a mesma consulta, e as barras de tarefas usam o valor para agrupar janelas por processo.
A propriedade é uma alegação, não um fato. O programa pode escrever o que quiser, e nem precisa mentir para estar errado: dentro de um contêiner ou de um Flatpak o processo vive no próprio namespace de PIDs, e o número que ele enxerga não é o que o gerenciador de janelas enxerga. A identidade de verdade está no servidor — para clientes num socket Unix, o kernel conhece o PID do outro lado, e a versão 1.2 do X-Resource, de 2011, permite que o cliente pergunte ao servidor em vez de confiar na janela, que é o que o xrestop faz. O Wayland fez disso a regra: o compositor obtém o PID do socket no momento da conexão, e nenhum cliente escreve o próprio.