WM_STATE
Свойство, которое оконный менеджер ставит на клиентское окно, чтобы сообщить его состояние, — и которое на практике стало справкой, подтверждающей, что окно вообще является настоящим приложением.
Большинство свойств ICCCM пишет клиент, а читает менеджер. WM_STATE идёт в обратную сторону. Приняв окно верхнего уровня под опеку — обычно заключив его в собственную рамку, — менеджер ставит свойство из двух полей: состояния и идентификатора окна значка, если он есть. Состояния таковы: WithdrawnState (0), NormalState (1) и IconicState (3). Пропуск на месте 2 — не ошибка: ZoomState и InactiveState (4) были в ранних черновиках и остались в Xutil.h с пометкой «устарело». Клиент, желающий сменить состояние, просит об этом, отправив WM_CHANGE_STATE корневому окну, а желающий исчезнуть совсем снимает окно с отображения и шлёт синтетическое UnmapNotify, чтобы менеджер понял, что так и задумано.
Побочный эффект перерос назначение. Поскольку WM_STATE есть только у управляемых клиентских окон, это самый простой способ отличить настоящее окно приложения от рамки вокруг него и от всех вспомогательных окон дерева. xprop, xdotool, wmctrl и _NET_CLIENT_LIST из EWMH находят клиентов именно по нему. Окно без WM_STATE при работающем оконном менеджере — это меню, рамка или приложение, которое никто не взял под опеку.