私のワークフローの大部分はショートカットの使用に基づいています。現在、私はxbindkeysとwmctrlを使用してアプリケーションを実行または起動します。例: Super+ FFirefox を実行し、まだ実行していない場合は実行します。
AutokeyはKDEでうまく機能します。 KDEのデフォルトのカスタムショートカットマネージャを使用してそれを置き換えることもできますが、xbindkeys
ウィンドウ/アプリケーションが実行されているかどうかを確認する方法はありません。それ。
あるいは、同様のコマンドを使用してアプリケーションがps
実行されていることを確認し、そうでなければ実行することもできますが、これは最後の質問である既存の実行中のウィンドウ/アプリケーションをプログラム的にアップロードまたは集中する方法です。
GNOMEにはいくつかの解決策があるようですがgdbus
、もちろんこれはKDEでは機能しません。
私ができることを知っている人はいますか?
答え1
多くの研究の終わりに、KDEでのみ機能し、KDEでのみ機能するソリューションであるkwinスクリプトを使用する方法を見つけました。
スクリプトは次のとおりです。
pgrep
プログラムが実行されていることを確認するために使用されます(有用なコマンドgrep
)- 実行中の場合:
- 渡されたクラス名またはタイトルを使用して、ウィンドウを明示的に「アクティブ化」するインスタントkwinスクリプトをインストールします。
- スクリプトの実行
- 停止スクリプト
- 削除スクリプト
- 実行していない場合:コマンドを実行して起動します。
たとえば、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関数を使用すると、他のコードを実行したり、プロセスとやり取りしたりできるためです。サブプロセス。通信プロセスの実行中に動作します。