GNU/Linux >> Tutoriales Linux >  >> Linux

Limite un programa gui en Linux a una sola instancia

Recomendaría reemplazar el enlace al programa con un enlace a un script de shell que verifica si el programa se está ejecutando y, si es así, usa la función del administrador de ventanas para destacar el programa y, si no es así, lo inicia. .


Encontré este hilo y lo implementé, compartiendo mi versión.

Creé un archivo ejecutable /usr/local/bin/run_once.sh que contiene

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

Esto comprueba usando wmctrl si la aplicación que está tratando de iniciar ya tiene una ventana abierta (algunos programas de interfaz gráfica de usuario mantienen a los trabajadores sin una interfaz gráfica de usuario en ejecución) en lugar de usar ps , usando -x para usar el WM_CLASS en lugar del nombre de la barra de título.

Para cada programa del que solo quiero una ventana copié el sistema .desktop archivo a ~/.local/share/applications y cambió el exec campo de exec=program --arguments a exec=/usr/local/bin/run_once.sh program --arguments


Generalmente, el código fuente de la aplicación debe modificarse. No es algo hecho por el sistema operativo.


Linux
  1. ¿Cómo asegurarse de que solo se ejecute una instancia de un script Bash?

  2. ¿Cómo reiniciar (o restablecer) un proceso en ejecución en Linux?

  3. Comprobar los servicios en ejecución en Linux

  4. ¿Cómo me aseguro de que solo se esté ejecutando una instancia de un script de Ruby a la vez?

  5. ¿Cuál es la mejor manera de garantizar que solo se ejecute una instancia de un script Bash?

¿Qué versión de Linux estoy ejecutando?

5 consejos para dominar Linux

Cómo matar procesos en ejecución en Linux

Una guía para ejecutar Traceroute en Linux

Cambiar UID/GID solo de un hilo en Linux

Problemas para ejecutar Steam Terraria en Linux