Ocultar GUI del programa después del inicio automático al inicio

Ocultar GUI del programa después del inicio automático al inicio

Después de sufrir unaerror en Redshift, encontré un gran reemplazo,Iris.

Puse la Iriscarpeta en mi homedirectorio y agregué el siguiente comando a Aplicaciones de inicio sh /home/arun/Iris/Iris.sh.

Todo funciona espléndidamente, pero al iniciar, también se abre la ventana GUI de configuración. Todo lo que realmente necesito es el pequeño ícono indicador del panel. Algo así como la función "Ocultar" en los "Elementos de inicio de sesión" de OS X.

¿Se puede lograr esto?

Respuesta1

La ventana de configuración del iris

Si cerramos la ventana de configuración de Iris con X, esaparentementecerrado.

Sin embargo , si hacemos lo mismo, con la ayuda de wmctrl( wmctrl -ic <window_id>), resulta que no sóloventanaEstá cerrado, pero la aplicación completa.

Mi conclusión es entonces que la ventana en realidad no estácerrado, perono mapeadocuando presionamos el X.

Podemos hacer lo mismo con la ayuda de xdotool. Con una versión editada de esta respuesta:¿Cómo puedo ejecutar un programa al inicio, minimizado?, entonces podemos iniciar Irissin que aparezca la ventana de configuración.

Iniciando irissinla ventana de configuración (script)

  1. El script utiliza ambos wmctrly xdotool:

    sudo apt-get install wmctrl xdotool
    
  2. Copie el siguiente script en un archivo vacío, guárdelo enel mismo directorio que su Iris.sharchivo(por lo que están juntos en el mismo directorio), como start_iris.py.

    #!/usr/bin/env python3
    import subprocess
    import time
    import sys
    import os
    
    command = os.path.dirname(sys.argv[0])+"/Iris.sh"
    subprocess.Popen(["/bin/bash", "-c", command])
    
    def get(cmd):
        return subprocess.check_output(cmd).decode("utf-8").strip()
    
    t = 0
    
    while t < 12:
        time.sleep(1)
        try:
            w_list = [l.split()[0] for l in get(["wmctrl", "-l"]).splitlines() if "Iris" in l]
            for w in w_list:
                check = [l for l in get(["xprop", "-id", w]).splitlines()\
                         if "WM_CLASS(STRING)" in l][0]
                if "Iris" in check:
                    subprocess.Popen(["xdotool", "windowunmap", w])
                    break
            break
        except (IndexError, subprocess.CalledProcessError):
            pass
        t += 1
    
  3. Ahora ejecute el siguiente comando en lugar del comando original para comenzar Iris:

    python3 /path/to/start_iris.py
    

¡La ventana de configuración ya no aparecerá!

Explicación

  • El guión analizasu propiodirectorio del archivo Iris.shy lo inicia.
  • Posteriormente, vigila la creación de nuevas ventanas de WM_CLASS Iris(su ventana de configuración).
  • Si encontró la ventana de destino,desasignarla ventana con el xdotoolcomando:

    xdotool windowunmap <window_id>
    

Notas

  1. Obviamente, al hacer clic en la Xventana de configuración también se desasigna la ventana.
    Aparentemente esto se hace de una manera diferente a xdotool. La consecuencia es que no puedes acceder a la ventana de configuración (desde el menú del indicador) sin reiniciar Iris.

    Sin embargo, mencionaste que normalmente no necesitas la ventana de configuración.en absoluto.

  2. Tenga en cuenta que al iniciar aplicaciones GUI desde Aplicaciones de inicio (especialmente cuando se trata de configuraciones de pantalla), es posible que necesite crear un pequeño descanso para que funcione bien. Si no funciona desde Aplicaciones de inicio, cambie el comando para agregar a Aplicaciones Stratup a:

    /bin/bash -c "sleep 10 && python3 /path/to/start_iris.py"
    

información relacionada