WM_STATE
Egenskapen fönsterhanteraren sätter på ett klientfönster för att tala om vilket läge det är i — och som i praktiken blivit kvittot på att ett fönster över huvud taget är ett riktigt program.
De flesta ICCCM-egenskaper skrivs av programmet och läses av fönsterhanteraren. WM_STATE går åt andra hållet. När fönsterhanteraren tagit hand om ett toppfönster, typiskt genom att lägga en egen ram runt det, sätter den egenskapen med två fält: tillståndet och ID:t på ikonfönstret, om något. Tillstånden är WithdrawnState (0), NormalState (1) och IconicState (3). Luckan vid 2 är inte ett misstag: ZoomState och InactiveState (4) fanns i tidiga utkast och lämnades kvar som föråldrade i Xutil.h, där de står än. Vill programmet byta läge ber det genom att skicka WM_CHANGE_STATE till rotfönstret, och vill det försvinna helt unmappar det fönstret och skickar ett syntetiskt UnmapNotify, så att fönsterhanteraren vet att det var meningen.
Bieffekten blev viktigare än syftet. Eftersom bara fönsterhanterade klientfönster bär WM_STATE är egenskapen det enklaste sättet att skilja det riktiga programfönstret från ramen runt det och från alla hjälpfönster i trädet. xprop, xdotool, wmctrl och EWMH:s _NET_CLIENT_LIST hittar klienter genom att leta efter den. Ett fönster utan WM_STATE under en körande fönsterhanterare är därför antingen en meny, en ram eller ett program som ingen tagit hand om.