Leksykon IT › Programowanie › _NET_SUPPORTING_WM_CHECK

_NET_SUPPORTING_WM_CHECK

Programowanie Svenska → Zaktualizowano: 2026-10-09

Uzgodnienie, dzięki któremu program może ustalić, czy działa menedżer okien obsługujący EWMH, nie ufając właściwościom pozostawionym przez martwy.

Okno główne przeżywa menedżer okien. Wszystko, co tam zapisał — _NET_SUPPORTED, _NET_CLIENT_LIST, _NET_CURRENT_DESKTOP — zostaje po awarii i wygląda tak samo wiarygodnie jak wcześniej. Odpowiedzią EWMH jest świadek: menedżer okien tworzy małe, nigdy niemapowane dziecko okna głównego i ustawia _NET_SUPPORTING_WM_CHECK na obu, każde z identyfikatorem tego dziecka. Program, który chce poznać stan rzeczy, odczytuje właściwość z okna głównego, idzie za identyfikatorem i sprawdza, czy dziecko istnieje i wskazuje na siebie. Jeśli menedżer okien umrze, jego okna znikają razem z połączeniem, łańcuch się rwie, a nieaktualna wartość na oknie głównym zostaje zdemaskowana jako śmieć.

Okno-dziecko niesie też _NET_WM_NAME z nazwą menedżera okien, dzięki czemu wmctrl -m i rozmaite skrypty wiedzą, czy rozmawiają z Openboksem, KWinem czy Mutterem. Obok na oknie głównym leży _NET_SUPPORTED: lista wszystkich atomów _NET_, które menedżer rozumie, więc program może zapytać przed zażądaniem pełnego ekranu lub strutu, zamiast wysyłać i liczyć na szczęście. GTK i Qt wykonują to sprawdzenie przy starcie i zapamiętują wynik. Wzorzec pochodzi z _WIN_SUPPORTING_WM_CHECK z GNOME z 1998 roku i w jednym punkcie bije ortodoksyjne selekcje WM_Sn z ICCCM: mówi, co menedżer okien potrafi, a nie tylko że istnieje.

← Wróć do leksykonu