IT用語集 › プログラミング › WM_WINDOW_ROLE

WM_WINDOW_ROLE

プログラミング Svenska → 更新: 2026-10-22

プログラムの複数のウィンドウのうち、そのウィンドウがどの役割かを示す短い名前("browser"、"3pane"、"gimp-toolbox" など)を保持するICCCMのプロパティ。タイトルが変わっても、セッションマネージャやウィンドウルールが見分けられる。

複数のトップレベルウィンドウを持つプログラムは、再起動時に困る。WM_CLASS は全ウィンドウで同じ、WM_NAME は文書ごとに変わり、ウィンドウIDは毎回新しい。1994年のICCCM 2.0はセッション管理の章で WM_WINDOW_ROLE を加えた。プログラムのウィンドウ間で一意で、実行をまたいで安定した文字列を持たせ、セッションマネージャがメインウィンドウと設定ダイアログを元の位置へ戻せるようにするものだ。名前を決めるのはプログラムで、Firefox は "browser"、Thunderbird は "3pane"、GIMP 2 は "gimp-toolbox"、"gimp-dock"、"gimp-image-window" を書き込む。決めなかったGTKプログラムは、プログラム名とランダムな数字から成る生成名になることが多い。プロパティが無ければICCCMは WM_CLASS にフォールバックし、それがウィンドウごとに一意であることを求めるが、気にする人はほとんどいない。

セッション面の利用はXSMP全体と同程度だが、ロールはウィンドウルールのキーとして第二の人生を得た。KWinのルールはウィンドウロールで照合でき、Openbox は <application> ルールに role= を取り、xdotool search --role はタイトルに関係なくウィンドウを見つける。GIMPのロールが普及させた。タイトルバーなしで特定のデスクトップにドッキングされたツールウィンドウは、長年どのルール設定ファイルにも載る定番例だった。GTKは gtk_window_set_role、Qtは QWidget::setWindowRole として公開したが、GTK 4はこの関数を削除し、Waylandにはトップレベルごとの app_id しかない。ほぼ WM_CLASS が元々担っていたものに近い。

出典 ICCCM
← 用語集に戻る