GNU/Linux >> Linux Esercitazione >  >> Linux

Limita un programma gui in Linux a una sola istanza

Consiglierei di sostituire il collegamento al programma con un collegamento a uno script di shell che controlla se il programma è in esecuzione e, in caso affermativo, utilizza la funzione del gestore delle finestre per portare il programma in primo piano e, in caso contrario, lo avvia .


Ho trovato questo thread e l'ho implementato, condividendo la mia versione.

Ho creato un file eseguibile /usr/local/bin/run_once.sh contenente

#! /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

Questo controlla usando wmctrl se l'applicazione che stai tentando di avviare ha già una finestra aperta (alcuni programmi gui mantengono i lavoratori senza gui in esecuzione) invece di usare ps , usando -x per usare il WM_CLASS invece del nome della barra del titolo.

Per ogni programma di cui voglio solo una finestra ho copiato il sistema .desktop file in ~/.local/share/applications e cambiato il exec campo da exec=program --arguments a exec=/usr/local/bin/run_once.sh program --arguments


Generalmente il codice sorgente dell'applicazione deve essere modificato. Non è qualcosa fatto dal sistema operativo.


Linux
  1. Sistema basato su Debian, solo un programma Gui, nient'altro?

  2. Come posso assicurarmi che sia in esecuzione solo un'istanza di uno script Ruby alla volta?

  3. Qual è il modo migliore per garantire che sia in esecuzione solo un'istanza di uno script Bash?

  4. Esegui i comandi della shell dal programma in esecuzione in WINE

  5. Problemi con Steam Terraria in esecuzione su Linux

Quale versione di Linux sto utilizzando?

5 consigli per padroneggiare Linux

Come riavviare (o ripristinare) un processo in esecuzione in Linux?

Linux:come limitare un processo a un core della CPU in Linux??

Come eliminare i processi in esecuzione in Linux

Una guida all'esecuzione di Traceroute in Linux