WM_CLIENT_LEADER
プログラムのリーダーウィンドウを指すICCCMのプロパティ。セッションIDを持つのはそのウィンドウだけで、セッションマネージャはこれでどのウィンドウが同じプログラムのものかを知る。
プログラムがトップレベルウィンドウを5枚持っていても、セッションマネージャが欲しいのはウィンドウごとではなくプログラムごとに一つのコマンドだ。1994年のICCCM 2.0はXSMPと同時にこれを解決した。各クライアントはリーダーウィンドウ(マップされない不可視のものが望ましい)を決め、セッションマネージャから渡されたIDを SM_CLIENT_ID としてそこに設定する。そしてリーダー自身を含む全トップレベルウィンドウの WM_CLIENT_LEADER に、リーダーのウィンドウIDを設定する。ウィンドウから正しい再起動コマンドまでは二度の参照で済む。再起動後にウィンドウマネージャが正しいウィンドウを正しい場所へ戻せるよう、各ウィンドウには WM_WINDOW_ROLE も加わった。メインウィンドウと設定ダイアログを区別する文字列である。
GTKとQtは、プログラマに気付かせずこれらを全部行う。GDKはディスプレイごとに WM_CLASS も持つ不可視のリーダーウィンドウを作り、ほぼ全てのGTKウィンドウで xprop を使うと WM_CLIENT_LEADER(WINDOW): window id # 0x… が見える。ウィンドウマネージャはこのプロパティをグループの目印にも再利用し、KWin は同じリーダーを持つウィンドウをタスクバーでまとめる(古い WM_HINTS のグループとも併用)。セッション側の用途は、SaveYourself にまともに応答するプログラムが少ないためほとんど使われず、プロパティは主に第二の人生で生きている。Waylandはどちらも app_id に置き換えた。トップレベルごとに文字列一つで、セッションIDはない。