超级终端示例:
我按alt+ h,脚本应该检查 hyper 是否已经在后台运行。
如果是,它应该已经打开打开的窗口。
如果没有,请打开一个新窗口。
操作系统:Ubuntu 18.04
答案1
创建键盘快捷键取决于您的 DesktopManager。在Ubuntu 18中这个答案解释了如何。以下是您应该设置为通过快捷方式启动的命令。
这个简单的命令可以为我的窗口管理器切换到超级窗口:
wmctrl -a Hyper
所有支持 EWMH/NetWM 规范的窗口/桌面管理器都可以使用wmctrl
. Ubuntu 桌面很可能是兼容的,但您可能需要安装wmctrl
.
我留下之前的答案,只是为了让您涉足桌面上可能做的其他事情。这就是我找到上面命令的方式。
旧答案:
您可以尝试编写有关脚本的一些关键元素:
ps -xau | grep hyper
将获取进程是否已在运行的信息。请注意,还会列出正在搜索的 grep 进程hyper
。第 1 步可能是可选的。最可能您的窗口管理器支持 EWMH/NetWM 规范。因此,您可以使用
wmctrl
.您可能必须安装它。输入wmctrl
终端以查看它是否存在。wmctrl -l
将为您提供所有当前打开的窗口的列表。wmctrl -a
然后,您可以激活所需的窗口并使用或转到该窗口wmctrl -R
wmctrl -h
将告诉您可以对桌面执行的其他不同操作。
例如在我的机器上(有几个打开的窗口和桌面),启动 Hyper 后,输入 wmctrl -l 时我有:
0x02c00006 18 mymachine urxvt
0x02e00006 19 mymachine ncurses.h = (/nix/store/ffjl7aw7f0gjwv4gb4mgb0w49v5dhrkg-ncurses-6.0-20171125-dev/include) - VIM
0x03c00006 16 mymachine urxvt
0x03000006 20 mymachine urxvt
0x03a00006 8 mymachine urxvt
0x00e00006 24 mymachine urxvt
0x01800003 15 mymachine Volume Control
0x04c00005 1 mymachine Hyper
0x03e00001 15 mymachine 2.3. Using Precedences - Chromium
0x03e00006 15 mymachine Edit - Unix & Linux Stack Exchange - Chromium
0x03e00007 15 mymachine C++ Core Guidelines - Chromium
注意这条线:它说在桌面 1 上有一个名为 Hyper 的窗口 0x04c00005:
0x04c00005 1 mymachine Hyper
您可以使用命令直接获取这一行:
wmctrl -l | grep Hyper
以便激活窗口:
wmctrl -a 0x04c00005
然而,由于某种原因,我不知道为什么这个最新命令在我的 Fluxbox 环境中不起作用...... Fluxbox 可能没有实现所有wmctrl
功能。
你应该测试一下。如果这在您的 Ubuntu 环境中有效,请尝试编写自动执行这些不同命令的 bash 脚本。然后告诉我们您在哪些方面取得了成功或遇到了阻碍。
编辑:似乎需要wmctrl -a
窗口的标题,而不是十六进制 ID。
所以解决方案很简单:
wmctrl -a Hyper
你也可以尝试
wmctrl -R Hyper
答案2
关键是Hyper
在窗口标题栏中找到一个唯一的名称,该名称不会与打开的任何其他程序的关键字相对应。我没有安装您提到的程序,但我在 Debian 9 上使用 Xfce 和mousepad
.因此,您可以将其添加为键盘快捷键:
bash -c 'wmctrl -a Mousepad || mousepad'
只需将鼠标垫替换为窗口标题栏中的关键字,然后在第二部分中使用您将用于从终端执行它的程序名称。如果窗口已经打开,上面的命令将激活该窗口。但是,如果命令失败,即||
它会启动程序。