GNU/Linux >> Znalost Linux >  >> Linux

Omezte program gui v Linuxu pouze na jednu instanci

Doporučil bych nahradit odkaz na program odkazem na shellový skript, který zkontroluje, zda program běží, a pokud ano, použije funkci správce oken k uvedení programu do popředí, a pokud ne, spustí jej .


Našel jsem toto vlákno a implementoval jsem ho a sdílel svou verzi.

Vytvořil jsem spustitelný soubor /usr/local/bin/run_once.sh obsahující

#! /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
    [email protected]
fi

Toto kontroluje pomocí wmctrl pokud aplikace, kterou se pokoušíte spustit, již má otevřené okno (některé programy gui udržují pracovníky bez gui spuštěné) namísto použití ps , pomocí -x použijte WM_CLASS místo názvu titulního pruhu.

Pro každý program, ze kterého chci pouze jedno okno, jsem zkopíroval systém .desktop soubor na ~/.local/share/applications a změnil exec pole od exec=program --arguments na exec=/usr/local/bin/run_once.sh program --arguments


Obecně je nutné upravit zdrojový kód aplikace. Není to něco, co dělá operační systém.


Linux
  1. Jak zajistím, že bude současně spuštěna pouze jedna instance skriptu Ruby?

  2. Jaký je nejlepší způsob, jak zajistit, aby byla spuštěna pouze jedna instance skriptu Bash?

  3. Spouštějte příkazy Shell z programu spuštěného ve WINE

  1. Linux – Získání skutečného OS pouze s otevřeným zdrojovým kódem běžícího na telefonu? Android?

  2. Jak restartovat (nebo resetovat) běžící proces v Linuxu?

  3. Zastavte běh programu při startu v Linuxu

  1. Linux – Jak omezit proces na jedno jádro CPU v Linuxu?

  2. Linux – restartovat pouze uživatelský prostor?

  3. Jak nainstalovat program One Gui na server Ubuntu?