WM_WINDOW_ROLE
Bir pencerenin programın hangi penceresi olduğunu kısa bir adla — “browser”, “3pane”, “gimp-toolbox” — bildiren ICCCM özelliği; başlık değişse bile oturum yöneticileri ve pencere kuralları onu tanır.
Birden çok üst düzey penceresi olan program, yeniden başlatmada bir sorunla karşılaşır: WM_CLASS hepsinde aynıdır, WM_NAME her belgeyle değişir, pencere kimlikleri de her seferinde yenidir. 1994’te ICCCM 2.0, oturum yönetimi bölümünde WM_WINDOW_ROLE’ü ekledi: programın pencereleri arasında benzersiz ve çalıştırmalar arasında kararlı olması gereken bir dizgi; böylece oturum yöneticisi ana pencereyi ve tercihler iletişim kutusunu eski yerlerine koyabilir. Adı program seçer. Firefox “browser”, Thunderbird “3pane” yazar, GIMP 2 pencerelerine “gimp-toolbox”, “gimp-dock” ve “gimp-image-window” koyardı; karar vermemiş GTK programları çoğunlukla program adı ile rastgele rakamlardan oluşan üretilmiş bir ad taşır. Özellik yoksa ICCCM WM_CLASS’a geri döner ve onu pencere başına benzersiz olmaya zorlar, ki bununla neredeyse kimse uğraşmaz.
Oturum yönü, XSMP’nin geri kalanı kadar kullanılır, ama rol pencere kurallarında anahtar olarak ikinci bir hayat buldu. KWin kuralları pencere rolüyle eşleşebilir, Openbox <application> kuralında role= kabul eder, xdotool search --role ise başlığı ne olursa olsun pencereyi bulur. Bunu GIMP rolleri ünlü yaptı: belirli bir masaüstünde başlık çubuksuz yerleşik araç penceresi, yıllarca her kural dosyasının klasik örneğiydi. GTK özelliği gtk_window_set_role, Qt ise QWidget::setWindowRole olarak sundu; GTK 4 işlevi kaldırdı, Wayland’de ise üst düzey başına tek bir app_id vardır — yaklaşık olarak WM_CLASS’ın zaten olduğu şey.