Kde Plasma 5 を使用した Xfce: 新しく作成されたウィンドウに自動的にフォーカスを当てるにはどうすればよいでしょうか?

Kde Plasma 5 を使用した Xfce: 新しく作成されたウィンドウに自動的にフォーカスを当てるにはどうすればよいでしょうか?

私はウィンドウ マネージャーとして Kde Plamsa5 を搭載した Xfce を使用しています。Xfce ウィンドウ設定は開けませんが、KDE ​​システム設定は開けます。新しく作成されたウィンドウに自動的にフォーカスするオプションが見つかりません。

新しいウィンドウを開くと、フォーカスは以前あったウィンドウに残りますが、新しいウィンドウが自動的に上に移動されてフォーカスされるようにしたいと思います。

答え1

これは、Kwin ウィンドウ設定の「フォーカス盗難防止」です。「中」に設定すると、新しく開いたウィンドウに自動的にフォーカスが設定されます。

答え2

クリーンなソリューション

私はプラズマを使用していないので、問題の原因を調べることはできません。原因を排除することが「最もクリーンな」解決策であることは説明する必要はありません。

それが不可能に思えるが、この組み合わせを使用したい場合は、以下の手順で動作させることができます。解決策は、新しく作成されたウィンドウを監視し、ウィンドウが表示されたらウィンドウを上に上げる、非常に「軽量」なバックグラウンド スクリプトです。

使い方

  1. スクリプトではwmctrl

    sudo apt-get install wmctrl
    
  2. 以下のスクリプトを空のファイルにコピーし、raise_window.py

  3. 次のコマンドでターミナルからテスト実行します。

    python3 /path/to/raise_window.py
    

    いくつかのアプリケーションを開いて、ウィンドウが自動的に表示されるかどうかを確認します。

  4. すべて正常に動作する場合は、スタートアップ アプリケーションに追加します: Dash > スタートアップ アプリケーション > コマンドの追加。

スクリプト

#!/usr/bin/env python3
import subprocess
import time
import os

get = lambda cmd: subprocess.check_output(cmd).decode("utf-8").strip()
curr_1 = get(["wmctrl", "-l"]).splitlines()

while True:
    try:
        curr_2 = get(["wmctrl", "-l"]).splitlines()
        new = [w for w in curr_2 if not w in curr_1]
        for w in new:
            w = w.split()[0]
            command = "wmctrl -ia "+w
            subprocess.Popen(["/bin/bash", "-c", command])
    except:
        pass
    curr_1 = curr_2
    time.sleep(1)

関連情報