有没有办法绑定快捷键来切换到 Ubuntu 18.04 LTS 中已经打开的应用程序?

有没有办法绑定快捷键来切换到 Ubuntu 18.04 LTS 中已经打开的应用程序?

Firefox 的 tilix 中是否有类似于地震模式的功能?

我想使用类似F12或 的快捷方式切换到任何已经运行的 Firefox 实例(或者如果尚不存在则打开一个新的) F11

答案1

我不知道有没有“原生”的方式来分配快捷方式以切换到现有窗口。您可以使用来实现这一点。wmctrl我个人使用一个小工具jumpapphttps://github.com/mkropat/jumpapp,其内部也使用wmctrl

使用 wmctrl

wmctrl默认情况下未安装。使用 安装sudo apt install wmctrl

下面的一行命令将切换到 Firefox,如果当前没有打开 Firefox 窗口则启动它:

wmctrl -xa Firefox || firefox

在 Bash shell 中,命令分隔符||的意思是:如果第一个命令不成功,则尝试下一个命令。因此,第一个命令wmctrl尝试激活 WM_CLASS 窗口Firefox。只有当找不到这样的窗口时(这意味着 Firefox 未运行),才会启动分隔符后的命令,即启动 Firefox 浏览器。

要找到命令中使用的窗口的 WM_CLASS wmctrl,您可以使用

wmctrl -lx

该选项x将添加一列显示窗口类,如

0x04400003  0 Navigator.Firefox     hostname keyboard - Is there a way to bind shortcut keys to switch to already open applications in Ubuntu 18.04 LTS? - Ask Ubuntu - Mozilla Firefox

第三个条目,Navigator.Firefox表明我们可以使用Firefox(或“Navigator”,或“Navigator.Firefox”)作为窗口类来识别窗口。

使用工具 jumpapp

虽然直接使用wmctrl并不复杂,但工具jumpapp(实际上是依赖于的 bash 脚本wmctrl)使用起来更加简单,并且还有一些额外的好处:

  • 实现起来就更加简单了。
  • 如果打开了同一应用程序的多个窗口,则随后按下快捷键将循环显示这些窗口。
  • 您可以绑定另一个快捷键,例如 a Shift+Your Shortcut以反向循环窗口
  • 如果应用程序已在运行,您可以使用热键在将窗口向前移动和最小化窗口之间切换。

jumpapp不在存储库中,但可以按照网站上的说明方便地安装为 .deb。

安装后jumpapp,只需在启动应用程序的命令前加上 即可jumpapp启动应用程序(如果尚未运行)或切换到现有窗口。将该命令分配给快捷键。

您还可以编辑文件Exec=中的行.desktop,为启动器提供相同的功能。事实上,其中jumpappify-desktop-entry包含一个命令,它将自动为您指定的 .desktop 文件执行此操作。

Gnome Shell 中的启动器默认已经像这样运行,但在其他桌面中,该应用程序可用于为启动器提供类似的“启动或切换到”功能。

答案2

要求:

  • 工具

为终端创建脚本 /home/user/term.sh:

#!/usr/bin/env bash

n=$@

xdotool search "term$n"

if [ $? == 0 ] ; then
   xdotool search "term$n" windowactivate
   exit
fi

xfce4-terminal --initial-title term$n

绑定到按键

  • Alt-1 :/home/user/term.sh 1
  • Alt-2 :/home/user/term.sh 2
  • Alt-3 :/home/user/term.sh 3

为 Firefox 创建脚本 /home/user/firefox.sh:

xdotool search "Mozilla Firefox"

if [ $? == 0 ] ; then
   xdotool search "Mozilla Firefox" windowactivate
   exit
fi

firefox
  • Alt-4 :/home/user/firefox.sh

相关内容