如果应用程序窗口存在,如何创建快捷方式?
我经常在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
如何将命令添加到快捷方式
-
安装
wmctrl
sudo apt-get install wmctrl
-
创建一个小脚本(打开一个空文件,将下面的脚本粘贴到其中)
#!/bin/bash wmctrl -ia "$(wmctrl -lp | grep "$(pgrep chrome)" | tail -1 | awk '{ print $1 }')"
将其保存为
raise_chrome.sh
-
将脚本添加到快捷方式; 选择:系统设置>“键盘”>“快捷方式”>“自定义快捷方式”。 单击“+”并添加命令:
/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 Text
, Terminal
和Chrome
,您可能希望使用多个快捷方式,并以应用程序作为参数运行脚本。
这样做
使用稍有不同的脚本:
#!/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将在您的应用启动器中打开第三个应用。 要快速识别与应用程序关联的数字,请按住超级按钮。