Ich würde empfehlen, den Link zum Programm durch einen Link zu einem Shell-Skript zu ersetzen, das überprüft, ob das Programm läuft, und wenn ja, verwendet es die Funktion des Fenstermanagers, um das Programm nach vorne zu bringen, und wenn nicht, startet es .
Ich habe diesen Thread gefunden und implementiert, indem ich meine Version geteilt habe.
Ich habe eine ausführbare Datei /usr/local/bin/run_once.sh
erstellt enthält
#! /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
Dies wird mit wmctrl
überprüft wenn die Anwendung, die Sie zu starten versuchen, bereits ein Fenster geöffnet hat (einige GUI-Programme lassen Arbeiter ohne GUI laufen), anstatt ps
zu verwenden , verwenden Sie -x, um den WM_CLASS
zu verwenden anstelle des Namens der Titelleiste.
Für jedes Programm, von dem ich nur ein Fenster haben möchte, habe ich das System .desktop
kopiert Datei nach ~/.local/share/applications
und den exec
geändert Feld von exec=program --arguments
bis exec=/usr/local/bin/run_once.sh program --arguments
Im Allgemeinen muss der Quellcode der Anwendung geändert werden. Es wird nicht vom Betriebssystem ausgeführt.