我正在使用一个名为 easystroke 的程序来从鼠标手势调用命令 - 通常用于启动应用程序。例如“gnome-terminal”。如果我已经打开了一个 gnome-terminal 窗口,并且我调用了 gnome-terminal 手势,我希望将焦点设置到已经运行的实例上,而不是生成一个新实例,这当然是现在发生的情况。(实际上,我对此更感兴趣,因为我的 gmail chrome 应用程序快捷方式和其他较大的应用程序。)
我对 ubuntu 和 linux 还很陌生,但我希望有一个巧妙的命令可以围绕我的启动命令来产生这种行为。(我想象某种单例应用程序列表管理器程序,它使用我的命令行,检查它是否已经在列表中,如果是,则将焦点转移到正在运行的进程(并且该进程仍在运行),否则生成一个新进程,然后使用命令行作为键将其添加到其列表中。)
答案1
我写了一个小程序,叫做jumpapp
正是出于这个目的。它让你能够使用一个命令首次运行时打开一个新应用程序,之后每次运行时切换到已打开的窗口。另外,如果您为该应用程序打开了多个窗口,则重复运行该命令将循环显示所有应用程序的窗口。
Usage: jumpapp [OPTION]... COMMAND [ARG]...
Jump to (focus) the first open window for an application, if it's running.
Otherwise, launch COMMAND (with opitonal ARGs) to start the application.
在底层,jumpapp
它使用两种方法定位应用程序窗口:1)获取 COMMAND 的所有正在运行的 pid 并查找具有匹配的窗口_NET_WM_PID
,2)查找具有与WM_CLASS
COMMAND 匹配的窗口。
如果你想尝试一下,很容易从源代码安装或者你可以从我的 PPA 安装它:
sudo add-apt-repository ppa:mkropat/ppa
sudo apt-get update
sudo apt-get install jumpapp
答案2
答案3
xwit“程序名称”将按名称将窗口置于最前面。Linux 上可以使用可执行文件的任何程序都可以使用启用了执行权限的 #!/bin/sh 脚本。xwit 还可以移动鼠标指针、移动窗口、调整窗口大小、提供与模式匹配的窗口名称列表、获取特定窗口的唯一窗口 ID 或关闭窗口……您可以通过 xwit 对窗口执行任何操作。
答案4
几年前,我创建了一个小应用程序,叫做麦克格拉正是出于这个目的。它最初仅适用于 Metacity 窗口管理器,但后来我将其改编为 Gnome。