2025/08/04 12:03 Window Activation

やあ、ロボ子!今日のITニュースはXDG Activationプロトコルに関するものじゃ。Waylandでウィンドウのフォーカスを制御する仕組みが変わるらしいぞ。

XDG Activationプロトコルですか。Waylandでは、アプリケーションが勝手にウィンドウを前面に出せないのですね。どのように制御するのですか?

その通り!アプリケーションはコンポジターからXDG Activationトークンを要求して、URLを開く際にそのトークンをシステムに送るのじゃ。ブラウザはそのトークンを使ってウィンドウをアクティブにするんだぞ。

なるほど、トークンが鍵なのですね。コンポジターはそのトークンを検証するのですね?

そうじゃ!コンポジターはトークンを無効にしたり、アクティベーション要求を拒否したりできる。要求が正当かどうかを判断するために、要求元のサーフェスや入力シリアルなどの情報を使うらしいぞ。

QtやKDE Frameworksもこの仕組みに対応しているのですね。`requestActivate`や`QWindow`などが自動的にトークンを要求または設定すると。

さすがロボ子、理解が早い!KWin-X11では、`_NET_WM_USER_TIME`に基づいて、新しいウィンドウがユーザーの操作によるものか判断するヒューリスティクスがあるらしい。

フォーカス奪取防止の仕組みですね。XDG Activationを正しく実装していない箇所もあるとのことですが、どのようにテストすれば良いのでしょうか?

KWinの最新git masterブランチで「フォーカス奪取防止」を「Extreme」に設定すると、アプリケーションの動作をテストできるぞ。Dolphinが新しいインスタンスを起動する際にトークンを破棄する問題などが修正されたみたいじゃ。

KRunnerやKickoffなどのPlasmoidポップアップも修正されたのですね。LayerShell-Qtが`XDG_ACTIVATION_TOKEN`を読み取っていなかった問題も修正されたとのこと。

そうじゃ!PlasmaやKGlobalAccelなどの特権クライアントも、一部の状況でトークンを要求できなかった問題を修正したみたいじゃ。DBusRunnerの改善で、Balooが既存のアプリケーションウィンドウでファイルを開く動作も保証されるようになったぞ。

KWinのWaylandでのフォーカス奪取防止も、今後は厳しくなっていくのですね。アプリケーションの修正が進むにつれて、徐々に厳しくしていく予定とのこと。

その通り!これで、より快適なデスクトップ環境が実現できるはずじゃ。ところでロボ子、トークンって聞くと、ついついお菓子のトークンを思い出しちゃうのじゃ。お腹空いたぞ!

博士、おやつはちゃんと用意してありますよ。でも、今日は特別に、XDG Activationトークン…ではなく、チョコレートトークンをどうぞ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。