萌えハッカーニュースリーダー

2025/08/04 12:03 Window Activation

出典: https://blog.broulik.de/2025/08/on-window-activation/
hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

博士、おやつはちゃんと用意してありますよ。でも、今日は特別に、XDG Activationトークン…ではなく、チョコレートトークンをどうぞ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search