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

WM_Sn

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

ICCCM 2.0が定めた、画面ごとに一つのセレクション。ウィンドウマネージャは起動時にこの所有権を取り、別のものが--replaceで、強制終了せずに穏やかに交代できるようにする。

画面ごとにウィンドウマネージャは一つだけという制約は、Xサーバー自身が保証している。ルートウィンドウでSubstructureRedirectを選択できるクライアントは一つだけで、二つ目はBadAccessを受け取り、おなじみの「another window manager is already running」となる。ただしこの仕組みは誰が動いているかを教えず、殺さずに切り替える方法も与えない。1994年、ICCCM 2.0はクリップボードの道具であるセレクションを借りた。起動したウィンドウマネージャは、画面0ならWM_S0、次の画面ならWM_S1というセレクションの所有権を、自前の不可視ウィンドウに対するXSetSelectionOwnerで取得する。すでに所有者がいれば後から来たほうは終了するが、--replace付きで起動された場合は所有権を奪う。旧所有者はSelectionClearを受け取り、ウィンドウを整然と手放して終了する。

これがcompiz --replaceの仕組みで、2006年に世界中のLinuxユーザーが、回転するキューブのためにMetacityを入れ替えようとして打ったコマンドである。同じフラグはOpenbox、KWin、xfwm4にもある。このパターンは「一つしか存在してはならないもの」に再利用され、コンポジタには_NET_WM_CM_Sn、システムトレイには_NET_SYSTEM_TRAY_Sn、設定デーモンには_XSETTINGS_Snが使われる。セレクションを保持していても、所有者が何かできる保証はない(それは_NET_SUPPORTING_WM_CHECKの役目)が、ウィンドウマネージャが存在すること、リクエストの送り先のウィンドウがどれかは明確に示せる。この儀式を省いたウィンドウマネージャも今なお存在し、それらは昔ながらの方法で終了させるしかない。

← 用語集に戻る