Unity Switcher で特定のウィンドウに切り替えるためのカスタム キーボード ショートカット

Unity Switcher で特定のウィンドウに切り替えるためのカスタム キーボード ショートカット

スイッチ用のカスタムキーを特定のアプリケーションにバインドすることは可能ですか?

たとえば、
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)" 

基本的にエラーの可能性は無視されますが、私の場合はうまくいきます。

関連情報