GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Beschränken Sie ein GUI-Programm in Linux auf nur eine Instanz

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.


Linux
  1. Debian-basiertes System, nur ein GUI-Programm, sonst nichts?

  2. Linux – Erhalten Sie ein echtes Open-Source-Only-Betriebssystem, das auf einem Telefon läuft? Android?

  3. So beenden Sie laufende Prozesse in Linux

  4. Wie stelle ich sicher, dass jeweils nur eine Instanz eines Ruby-Skripts ausgeführt wird?

  5. Was ist der beste Weg, um sicherzustellen, dass nur eine Instanz eines Bash-Skripts ausgeführt wird?

Welche Version von Linux verwende ich?

5 Tipps zum Beherrschen von Linux

Eine Anleitung zum Ausführen von Traceroute unter Linux

UID/GID nur eines Threads in Linux ändern

Führen Sie Shell-Befehle aus einem Programm aus, das in WINE ausgeführt wird

Wie beschränke ich einen Prozess auf einen CPU-Kern in Linux?