我经常在 Sublime Text、Terminal 和 Chrome 之间切换。我想绑定“Alt + 1”之类的快捷键,以便打开我当前的 Terminal 和当前的 Google Chrome。
现在,每次我启动 Google Chrome 或终端时,它都会打开一个新窗口。有什么想法吗?
谢谢 !
答案1
drizzle 的答案中的方法可行,但也有一些缺点
替代选择
你可以只需使用以下命令:
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
如何将命令添加到快捷方式
安装
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。
注意:使用绝对路径,而不是例如
~
解释
该命令实际上是这个,解释也类似:
在本部分中:
"$(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 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
答案2
您可以使用 alt-tab 在程序之间快速切换。
您还可以像这样使用超级按钮(又称 Windows 按钮):Super+数字。例如,Super+3 将打开应用启动器中的第三个应用。要快速识别与应用关联的数字,请按住超级按钮。