Пользовательское сочетание клавиш для переключения на определенное окно в Unity Switcher

Пользовательское сочетание клавиш для переключения на определенное окно в Unity Switcher

Можно ли привязать пользовательскую клавишу для переключения на определенное приложение?

Например:
super+1 переключает в окно Chrome (не первое в списке Windows).
super+2 переключает в окно Nautilus.

Или хотя бы:
super+1 переключает на первое окно
super+2 переключает на второе окно

решение1

Это потребует некоторой работы, но вы можете сделать это с помощью скриптов и сочетаний клавиш.

Есть инструмент, который называетсяxdotoolи он позволяет вам имитировать нажатия клавиатуры. Вы можете привязать клавиши клавиатуры к запуску скриптов, которые используют этот инструмент.

Используя любой язык, который вы предпочитаете для передачи команд терминала, вы можете найти конкретные идентификаторы процессов с помощью ps aux | grep "process here"

Используя xdotool search --pid "process ID here"вы получите несколько идентификаторов окон для одного приложения. Я не знаю, как их отсортировать, чтобы найти правильный, поэтому то, что вы могли бы сделать, это заставить свой скрипт перебирать найденные идентификаторы в

xdotool windowactivate "window ID here"которое откроет ваше окно.

Например, мой ключ 1 будет привязан к запуску скрипта, который найдет идентификатор процесса для "filezilla". Затем он найдет идентификаторы окон с помощью xdotool, возьмет эти идентификаторы и затем передаст их через xdotool, чтобы поднять окно. Ключ 2 может быть "google-chrome"

решение2

Я собрал воедино то, что предложил мистер Ли, и создал этот сценарий:

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

По сути, он игнорирует возможность возникновения ошибок, но в моем случае работает.

Связанный контент