如果已运行,如何阻止粘性应用程序启动新实例?

如果已运行,如何阻止粘性应用程序启动新实例?

我有一个用 Python 编写的程序,并通过桌面文件添加到 Gnome。当我单击 Gnome 中的粘性图标来启动它时,它会复制任务栏上的图标并打开一个新实例。其他粘性应用程序只是在其下方画一条线。当您单击这些其他应用程序(例如 Chrome 或 Sublime Text)并且它们已经在运行时,gnome 只是跳转到它们的窗口,而不是启动新实例。

这种行为是我需要在应用程序中处理的事情,还是 Gnome 可以为我处理的事情?如果这有什么区别的话,它是一个带有 bash 启动器的 PyQt4 应用程序。

编辑-忘记提及我正在运行 Ubuntu-Gnome 16.10 和 Gnome 3.20.4

答案1

我让这个工作。

您需要将“StartupWMClass”键添​​加到桌面条目中。

StartupWMClass:如果指定,则已知应用程序将使用给定字符串映射至少一个窗口作为其 WM 类或 WM 名称提示。

协议信息这里有更多详细信息这里

您可以安装 xprop,运行它并单击标题栏以找出您的应用程序是什么类。

答案2

我不知道Python API,但这与Gtk应用程序

阅读Gtk应用程序如何做维基百科说:

GtkApplication 默认应用程序是单实例的

也可以看看这个问题

相关内容