Benutzerdefinierte Tastenkombination zum Wechseln zu einem bestimmten Fenster im Unity Switcher

Benutzerdefinierte Tastenkombination zum Wechseln zu einem bestimmten Fenster im Unity Switcher

Ist es möglich, eine benutzerdefinierte Taste zum Wechseln zu einer bestimmten Anwendung zu binden?

Beispiel:
super+1 wechselt zum Chrome-Fenster (nicht das erste in der Fensterliste).
super+2 wechselt zum Nautilus-Fenster

Oder zumindest:
super+1 wechselt zum ersten Fenster
super+2 wechselt zum zweiten Fenster

Antwort1

Dies würde etwas Arbeit erfordern, aber Sie könnten es mit Skripten und Tastenkombinationen erledigen.

Es gibt ein Tool namensAbonnierenund Sie können damit Tastenanschläge simulieren. Sie können Ihre Tastaturtasten binden, um Skripte auszuführen, die dieses Tool verwenden.

Mit der von Ihnen bevorzugten Sprache zum Weiterleiten von Terminalbefehlen können Sie bestimmte Prozess-IDs finden mit ps aux | grep "process here"

Wenn Sie verwenden, xdotool search --pid "process ID here"erhalten Sie mehrere Fenster-IDs für eine einzelne Anwendung zurück. Ich weiß nicht, wie ich sie sortieren soll, um die richtige zu finden. Sie könnten also Ihr Skript verwenden, um die gefundenen IDs zu durchlaufen und

xdotool windowactivate "window ID here"wodurch Ihr Fenster geöffnet wird.

Beispielsweise wird meine Taste 1 so gebunden, dass sie ein Skript ausführt, das die Prozess-ID für „filezilla“ findet. Dann findet es die Fenster-IDs mit xdotool, nimmt diese IDs und übergibt sie dann an xdotool, um das Fenster aufzurufen. Die Taste 2 könnte „google-chrome“ sein.

Antwort2

Ich habe die Vorschläge von Mr. Lee zusammengestellt und dieses Skript erstellt:

#!/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)" 

Es ignoriert grundsätzlich die Möglichkeit eines Fehlers, funktioniert aber bei mir.

verwandte Informationen