如果存在应用程序窗口,我该如何创建快捷方式来调出该窗口?

如果存在应用程序窗口,我该如何创建快捷方式来调出该窗口?

我经常在 Sublime Text、Terminal 和 Chrome 之间切换。我想绑定“Alt + 1”之类的快捷键,以便打开我当前的 Terminal 和当前的 Google Chrome。

现在,每次我启动 Google Chrome 或终端时,它都会打开一个新窗口。有什么想法吗?

谢谢 !

答案1

drizzle 的答案中的方法可行,但也有一些缺点

  • 它有延迟;按下Super按键时,您必须等待大约一秒钟才能显示数字。
  • 启动器中项目的顺序可能会发生变化,具体取决于您运行的应用程序。项目的数量Chrome可能会有所不同。

    在此处输入图片描述

替代选择

可以只需使用以下命令:

wmctrl -a chrome

这将打开第一个找到的名称中带有“chrome”的窗口。但这也会打开我现在正在写入的窗口(a firefox窗口名称为:“打开当前 Google Chrome 的快捷方式...”

使用窗口的 pid 将防止这种情况发生。因此,我认为更优雅的做法是输入以下命令:

wmctrl -ia "$(wmctrl -lp | grep "$(pgrep chrome)" | tail -1 | awk '{ print $1 }')"

在快捷键下(Alt+1就可以了),假设你需要安装wmctrl

sudo apt-get install wmctrl

如何将命令添加到快捷方式

  1. 安装wmctrl

    sudo apt-get install wmctrl
    
  2. 创建一个小脚本(打开一个空文件,将下面的脚本粘贴到其中)

    #!/bin/bash
    wmctrl -ia "$(wmctrl -lp | grep "$(pgrep chrome)" | tail -1 | awk '{ print $1 }')"
    

    另存为raise_chrome.sh

  3. 将脚本添加到快捷方式;选择:系统设置>“键盘”>“快捷方式”>“自定义快捷方式”。单击“+”并添加命令:

    /bin/bash /path/to/raise_chrome.sh
    

    例如,快捷方式Alt+ 1

    注意:使用绝对路径,而不是例如~

解释

该命令实际上是这个,解释也类似:

在本部分中:

"$(wmctrl -lp | grep "$(pgrep chrome)" | tail -1 | awk '{ print $1 }')"

命令:

wmctrl -lp

列出所有窗口,包括其 pid 和窗口 id。结果通过管道传输到

grep "$(pgrep chrome)"

它过滤(列出)所有出现的Chrome窗口。

然后,

tail -1

将为我们提供列表中的最后一项,即最新创建的窗口(因为wmctrl按时间顺序列出窗口)。

awk '{ print $1 }'

最后,将给我们该行中的第一个字符串(来自的输出wmctrl),即窗口 id。

命令:

wmctrl -ia <window_id>

然后将提高最后创建的窗口Chrome

笔记

无需多言,您可以chrome用任何其他应用程序(进程名称)替换命令,并将它们放在单独的组合键下。


编辑

使用应用程序作为参数

由于您提到 Sublime TextTerminalChrome,您可能需要使用多个快捷方式,并以应用程序作为参数运行脚本。

要做到这一点

使用稍有不同的脚本:

#!/bin/bash
app=$1
wmctrl -ia "$(wmctrl -lp | grep "$(pgrep "$app")" | tail -1 | awk '{ print $1 }')"

然后使用快捷键下的命令运行它:

sh /home/jacob/Bureaublad/raise.sh sublime_text
sh /home/jacob/Bureaublad/raise.sh gnome-terminal

sh /home/jacob/Bureaublad/raise.sh chrome

答案2

您可以使用 alt-tab 在程序之间快速切换。

您还可以像这样使用超级按钮(又称 Windows 按钮):Super+数字。例如,Super+3 将打开应用启动器中的第三个应用。要快速识别与应用关联的数字,请按住超级按钮。

相关内容