Linux 中的 gui 程序限制为一个实例

ton*_*sid 6 linux ubuntu ubuntu-10.04

有一些 gui 程序,如果你从菜单中选择它们,如果它已经打开,而不是打开一个新的实例,那个窗口将成为最重要的。但是,有些程序会打开自身的多个实例。

有一个程序表现出后一种行为,但我希望它做前者。如何才能做到这一点?

Pet*_*ric 8

我会推荐一个链接到一个替代链接程序shell脚本检查程序正在运行,如果是,它采用了窗口管理器的功能,最重要的是带来了程序,如果不是的话,启动它.

  • ^^^ 这是一个新问题。;-) (3认同)

Pel*_*lle 6

我找到了这个线程并实现了它,分享了我的版本。

我创建了一个可执行文件,/usr/local/bin/run_once.sh其中包含

#! /bin/bash
application=$1
if wmctrl -xl | grep "${application}" > /dev/null ; then
    # Already running, raising to front
    wmctrl -x -R "$application"
else
    # Not running: starting
    $@
fi
Run Code Online (Sandbox Code Playgroud)

这会检查wmctrl您尝试启动的应用程序是否已经打开了一个窗口(一些 gui 程序让工作人员没有 gui 运行)而不是使用ps,使用 -x 来使用WM_CLASS而不是标题栏名称。

对于我只想要一个窗口的每个程序,我将系统.desktop文件复制到~/.local/share/applications并将exec字段从更改exec=program --argumentsexec=/usr/local/bin/run_once.sh program --arguments