我最近从 windows 切换到 linux 并安装了一个名为 Albert的应用程序启动器,如果我有一个应用程序正在运行(例如:chrome 或 vscode),如果我在 alfred 中键入相同的应用程序名称,它将打开一个新窗口。我正在寻找一个启动器,如果应用程序没有运行,它将打开一个新窗口,否则它将把你重定向到已经运行的窗口
谢谢。
我最近从 windows 切换到 linux 并安装了一个名为 Albert的应用程序启动器,如果我有一个应用程序正在运行(例如:chrome 或 vscode),如果我在 alfred 中键入相同的应用程序名称,它将打开一个新窗口。我正在寻找一个启动器,如果应用程序没有运行,它将打开一个新窗口,否则它将把你重定向到已经运行的窗口
谢谢。
大多数启动器的默认行为是让启动的应用程序处理事情。启动器只会“启动”应用程序,即使它可能已经打开。在许多情况下,这会导致应用程序的新实例。在其他情况下,应用程序被编程为检查现有实例,如果存在则对现有窗口执行某些操作。例如,Gimp 将“感知”它是否已经在运行,并切换到现有实例而不是启动新实例。
这符合某些人可能更喜欢的将“启动”与“切换到”分开的概念。每当您想转到现有实例时,您都可以切换到它。当您希望启动一个新实例时,您就启动了。你总是知道启动器会给你一个新的实例。有些人可能更喜欢这样,但其他人,比如你,可能更喜欢不同的方式。
实际上有一个启动器是一个明显的例外:它是默认 Ubuntu 桌面的启动器,它使用“Gnome Shell”。此启动器确实使用您所追求的“启动或切换到”模型。
所以我已经可以用一种简单的方式回答你的问题了:不会两次启动同一个应用程序的启动器是你的 Ubuntu 桌面的默认启动器。
您更喜欢使用 Albert(可能这就是您的意思,而不是 Alfred,这是 Albert 的 OS X 对应物),因为它轻巧、快速且优雅。Albert 的路线图上有“启动或切换到”功能。目前,它不这样做。尽管如此,这是 Linux,并且可以通过 Albert 或任何其他启动器破解您想要的行为。这个10 岁的问题有一些启发,但是那里没有提到更简单的方法。
最简单的方法是使用单行命令启动您的命令,例如:
这将使用该实用程序检查
wmctrl
是否存在“计算器”窗口。如果失败,则执行第二个命令,即启动应用程序的命令。如果wmctrl
不会安装在您的系统上,那么您可以使用命令安装它sudo apt install wmctrl
。在实践中,您将编辑
.desktop
启动器,这是启动器用来启动应用程序的一个小文本文件。这些文件(除其他外)位于/usr/share/applications
. 例如/usr/share/applications/org.gnome.Calculator.desktop
,除其他外,包含以下行。该
Exec=
行定义了应用程序的启动方式。所以如果你更换经过
您将
.desktop
文件更改为“启动或切换到”。您需要sh -c "..."
这里的构造,因为.desktop
启动器不支持Exec=
在线上的多个命令。要
.desktop
在无需管理员身份的情况下安全地更改启动器,请将要更改的启动器复制.desktop
到~/.local/share/applications
. 然后你可以用你的文本编辑器编辑它们。您的用户主文件夹下的更改.desktop
文件替换了安装在系统范围(所有用户)下的/usr/share/applications
.就个人而言,我使用
jumpapp
的是基于相同原理的 bash 脚本。然而,它更高级,并且会在随后的调用中在可能打开的不同窗口之间切换。如果这对您来说太复杂,请尝试您是否可以使用 Ubuntu 桌面的默认“全屏”启动器。我学会了并使用 jumpapp 作为键盘快捷键(Super+W启动或切换到浏览器,Super+F启动或切换到文件管理器等)。