用于在 Unity Switcher 中切换到特定窗口的自定义键盘快捷键

用于在 Unity Switcher 中切换到特定窗口的自定义键盘快捷键

可以将自定义键绑定到特定应用程序来切换吗?

例如:
super+1 切换到 chrome 窗口(不是窗口列表中的第一个窗口)。super
+2 切换到 nautilus 窗口

或者至少:
super+1 切换到第一个窗口
super+2 切换到第二个窗口

答案1

这需要一些工作,但您可以使用脚本和键绑定来完成。

有一种工具叫工具它可以让你模拟键盘按下。你可以绑定键盘按键来运行利用此工具的脚本。

使用你喜欢的任何语言来管道终端命令,你可以找到特定的进程ID ps aux | grep "process here"

使用xdotool search --pid "process ID here"您将获得单个应用程序的多个窗口 ID。我不知道如何对它们进行排序以找到正确的 ID,因此您可以做的是使用脚本,将找到的 ID 迭代到

xdotool windowactivate "window ID here"这将打开你的窗口。

例如,我的 1 键将绑定到运行一个脚本,该脚本查找“filezilla”的进程 ID。然后它将使用 xdotool 查找窗口 ID,获取这些 ID,然后将它们传递给 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)" 

它基本上忽略了任何错误的可能性,但对我来说有用。

相关内容