如果应用程序窗口存在,如何创建快捷方式?

我经常在Sublime Text,Terminal和Chrome之间切换。 我想绑定像“Alt + 1”这样的快捷方式,这样我的当前终端和当前的Google Chrome就会打开。

现在,每次我启动谷歌浏览器或终端,它都会打开一个新窗口。 任何的想法 ?

谢谢 !

毛毛雨的回答方法可行,但有一些缺点

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

    在此处输入图像描述

替代选择

可以简单地使用命令:

 wmctrl -a chrome 

这将在其名称中引发第一个找到“chrome”的窗口。 然而,这也会提升我现在写的窗口( a firefox窗口,名为: “打开当前谷歌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

    NB使用绝对路径,而不是~

说明

该命令实际上是这个命令的“转换”,解释类似:

在该部分:

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

命令:

 wmctrl -lp 

列出所有窗口,包括它们的pid和window-id。 结果是用管道输送的

 grep "$(pgrep chrome)" 

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

然后,

 tail -1 

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

 awk '{ print $1 }' 

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

命令:

 wmctrl -ia  

然后会提升最后创建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 

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

您还可以使用超级按钮(也称为Windows按钮),如下所示:Super + number。 例如。 Super + 3将在您的应用启动器中打开第三个应用。 要快速识别与应用程序关联的数字,请按住超级按钮。