IT-lexikon › Programmering › WM_WINDOW_ROLE

WM_WINDOW_ROLE

Programmering In English → Uppdaterad: 2026-10-10

ICCCM-egenskapen med ett kort namn på vilket av programmets fönster ett fönster är — "browser", "3pane", "gimp-toolbox" — så att sessionshanterare och fönsterregler känner igen det även när titeln bytts.

Ett program med flera toppfönster har ett problem vid återstart: WM_CLASS är densamma för alla, WM_NAME byter innehåll med varje dokument och fönster-ID:n är nya varje gång. ICCCM 2.0 lade 1994, i kapitlet om sessionshantering, till WM_WINDOW_ROLE: en sträng som ska vara unik bland programmets fönster och stabil mellan körningar, så att en sessionshanterare kan lägga tillbaka huvudfönstret och inställningsdialogen där de stod. Programmet väljer själv. Firefox skriver "browser", Thunderbird "3pane", GIMP 2 satte "gimp-toolbox", "gimp-dock" och "gimp-image-window" på sina fönster, och GTK-program som inte bestämt något får ofta ett genererat namn av programnamn och slumptal. Saknas egenskapen faller ICCCM tillbaka på WM_CLASS och kräver då att den är unik per fönster, vilket nästan ingen bryr sig om.

Sessionsdelen används lika lite som resten av XSMP, men rollen fick ett andra liv som nyckel i fönsterregler. KWin kan matcha regler på fönsterroll, Openbox tar role= i sin <application>-regel och xdotool search --role hittar fönstret oavsett titel. Det var GIMP-rollerna som gjorde det populärt: ett dockat verktygsfönster utan titelrad på ett bestämt skrivbord var länge det klassiska exemplet i varje regelfil. GTK exponerade egenskapen som gtk_window_set_role och Qt som QWidget::setWindowRole; GTK 4 tog bort funktionen, och under Wayland finns bara app_id, en per toppfönster — ungefär vad WM_CLASS redan var.

Källor ICCCM
← Tillbaka till lexikonet