
スイッチ用のカスタムキーを特定のアプリケーションにバインドすることは可能ですか?
たとえば、
super+1 は Chrome ウィンドウに切り替えます (Windows リストの最初のウィンドウではありません)。super
+2 は Nautilus ウィンドウに切り替えます。
または少なくとも:
super+1 で最初のウィンドウに切り替え、
super+2 で 2 番目のウィンドウに切り替えます
答え1
これには少し手間がかかりますが、スクリプトとキーバインドを使用してこれを行うことができます。
というツールがありますxdoツールキーボードの押下をシミュレートできます。キーボードのキーをバインドして、このツールを利用したスクリプトを実行できます。
ターミナルコマンドをパイプするのに好きな言語を使用して、特定のプロセスIDを見つけることができます。
ps aux | grep "process here"
を使用するとxdotool search --pid "process ID here"
、1つのアプリケーションに対して複数のウィンドウIDが返されます。正しいIDを見つけるためにそれらを並べ替える方法がわからないので、スクリプトで見つかったIDを反復処理して、
xdotool windowactivate "window ID here"
ウィンドウが表示されます。
たとえば、キー 1 は「filezilla」のプロセス ID を検索するスクリプトを実行するようにバインドされます。次に、xdotool でウィンドウ ID を検索し、それらの ID を取得して、xdotool に渡してウィンドウを表示します。キー 2 は「google-chrome」になります。
答え2
私は Lee 氏の提案をまとめて、このスクリプトを作成しました:
#!/bin/bash
APP=$1
if [ -z "$APP" ]; then
echo Usage: $0 EXECUTABLE_NAME
exit 1
fi
PID=$(pgrep -f $APP | head -n 1)
if [ -z "$PID" ]; then
echo $APP executable not found
exit 2
fi
for WINDOW_ID in $(xdotool search --pid $PID); do
xdotool windowactivate $WINDOW_ID
done
notify-send "Switched to $APP (PID=$PID)"
基本的にエラーの可能性は無視されますが、私の場合はうまくいきます。