wmctrl のようなツールや kde wayland の代替

wmctrl のようなツールや kde wayland の代替

私のワークフローの大部分はショートカットの使用に基づいています。現在、私はxbindkeysとwmctrlを使用してアプリケーションを実行または起動します。例: Super+ FFirefox を実行し、まだ実行していない場合は実行します。

AutokeyはKDEでうまく機能します。 KDEのデフォルトのカスタムショートカットマネージャを使用してそれを置き換えることもできますが、xbindkeysウィンドウ/アプリケーションが実行されているかどうかを確認する方法はありません。それ。

あるいは、同様のコマンドを使用してアプリケーションがps実行されていることを確認し、そうでなければ実行することもできますが、これは最後の質問である既存の実行中のウィンドウ/アプリケーションをプログラム的にアップロードまたは集中する方法です。

GNOMEにはいくつかの解決策があるようですがgdbus、もちろんこれはKDEでは機能しません。

私ができることを知っている人はいますか?

答え1

多くの研究の終わりに、KDEでのみ機能し、KDEでのみ機能するソリューションであるkwinスクリプトを使用する方法を見つけました。

スクリプトは次のとおりです。

  1. pgrepプログラムが実行されていることを確認するために使用されます(有用なコマンドgrep
  2. 実行中の場合:
    1. 渡されたクラス名またはタイトルを使用して、ウィンドウを明示的に「アクティブ化」するインスタントkwinスクリプトをインストールします。
    2. スクリプトの実行
    3. 停止スクリプト
    4. 削除スクリプト
  3. 実行していない場合:コマンドを実行して起動します。

たとえば、Firefox に焦点を当てたり実行したい場合は、次のスクリプトを使用します。

ww -f firefox -c firefox

-f:ウィンドウクラス名
-c:実行されていないときに実行されるコマンド
-fa:クラスの代わりにウィンドウタイトルを使用する代替フィルタ

これはスクリプトです。私は今それを使用しており、うまく動作します。

答え2

これ自動キースクリプトは次に焦点を当てます。Firefoxブラウザ実行中または起動したら焦点を合わせます。

output = system.exec_command("wmctrl -l", getOutput=True)
if "Firefox" in output:
    window.activate("Firefox",switchDesktop=True)
else:
    subprocess.Popen(["firefox"])

私が使ったことを見てくださいサブプロセス.Popen関数を使用すると、他のコードを実行したり、プロセスとやり取りしたりできるためです。サブプロセス。通信プロセスの実行中に動作します。

関連情報