WM_WINDOW_ROLE
La propiedad de ICCCM con un nombre corto que dice cuál de las ventanas de un programa es esta — "browser", "3pane", "gimp-toolbox" — para que gestores de sesión y reglas de ventana la reconozcan aunque el título haya cambiado.
Un programa con varias ventanas de primer nivel tiene un problema al reiniciarse: WM_CLASS es la misma para todas, WM_NAME cambia con cada documento y los ID de ventana son nuevos cada vez. En 1994 ICCCM 2.0 añadió WM_WINDOW_ROLE en su capítulo de gestión de sesiones: una cadena única entre las ventanas del programa y estable entre ejecuciones, para que un gestor de sesión pueda devolver la ventana principal y el diálogo de preferencias a donde estaban. El nombre lo elige el programa. Firefox escribe "browser", Thunderbird "3pane", GIMP 2 ponía "gimp-toolbox", "gimp-dock" y "gimp-image-window" en sus ventanas, y los programas GTK que nunca decidieron nada acaban a menudo con un nombre generado a base de nombre de programa y dígitos aleatorios. Si la propiedad falta, ICCCM recurre a WM_CLASS y exige entonces que sea única por ventana, cosa que casi nadie se molesta en cumplir.
La parte de sesión se usa tan poco como el resto de XSMP, pero el rol encontró una segunda vida como clave en las reglas de ventana. Las reglas de KWin pueden filtrar por rol de ventana, Openbox acepta role= en su regla <application>, y xdotool search --role encuentra la ventana sea cual sea su título. Fueron los roles de GIMP los que lo popularizaron: una ventana de herramientas acoplada, sin barra de título y en un escritorio concreto fue durante años el ejemplo de manual en cualquier archivo de reglas. GTK expuso la propiedad como gtk_window_set_role y Qt como QWidget::setWindowRole; GTK 4 eliminó la función, y bajo Wayland solo existe app_id, uno por ventana de primer nivel — más o menos lo que WM_CLASS ya era.