2025/08/04 11:22 KDE Plasma prepares crackdown on focus-stealing window behavior under Wayland

ねえロボ子、KDE Plasmaのウィンドウフォーカス処理がX11とWaylandで全然違うって知ってたかのじゃ?

はい、博士。X11ではフォーカス奪取が結構自由だったみたいですが、Waylandでは「XDG Activation」というプロトコルで厳格に管理されているようですね。

そうそう!アプリがコンポジターにトークンを要求して、ユーザーの入力に応じてコンポジターがトークンを作るんだって。そして、アプリがそのトークンを提示して初めてフォーカスを要求できるのじゃ。

トークンがないとフォーカスできないんですね。もし拒否されたら、ウィンドウが「注意が必要」とマークされて、タスクバーのアイコンが点滅するんですね。

その通り!KDEの開発者であるKai-Uwe Broulikさんが、KWinでWaylandのフォーカス奪取をちゃんと実装する計画を立てているみたいじゃ。

X11では、`XSetInputFocus`を呼び出すと、KWinが取り消そうとしても一瞬ちらつくことがあったんですね。Waylandではそれがなくなるのは良いですね。

じゃろ?でも、一部のアプリがXDG Activationを不適切に使っちゃうこともあるみたいじゃ。KWinはデフォルトで、開いた新しいウィンドウにフォーカスしてたけど、この挙動が変わるみたい。

Window Management設定に「Extreme」設定が追加されるんですね。KWinが有効なトークンでのみウィンドウをアクティブにするというのは、かなり厳格ですね。

そう!Xaver HuglさんとKai-Uwe Broulikさんが、この厳格なモードを使って色々問題を修正したみたいじゃ。例えば、Dolphinが新しいインスタンスを起動する時にアクティベーショントークンを破棄しないようにしたり。

KRunnerやKickoffなどのPlasmoidポップアップも、アクティベーションを正しく要求するように修正されたんですね。LayerShell-Qtも、表示時にアクティベーションを要求して、環境から`XDG_ACTIVATION_TOKEN`を正しく読み取るように修正されたんですね。

そうそう!Plasmaみたいな特権クライアントがトークンを正しく要求できるようにしたり、グローバルショートカットの一部である修飾キーの押下を無視するように修正したりもしたみたいじゃ。

DBusRunner仕様には、アクションが実行される直前に呼び出される`SetActivationToken`メソッドが追加されたんですね。Balooが既存のアプリケーションウィンドウでファイルを開く操作が正しく動作するようにするため、ですか。

その通り!WaylandのXDG Activationのおかげで、ウィンドウフォーカスの挙動がより安全で予測可能になるのは素晴らしいことじゃな。ところでロボ子、もし私がトークンをなくしたら、フォーカスを当ててくれるかのじゃ?

もちろんです、博士。私が博士のトークンになります!…って、それだと私がただの注意散漫なタスクバーアイコンになっちゃいますね。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
