0 votos

Automator script para reiniciar una aplicación minimizada sin AppleScript

¿Cómo puedo conseguir que un script de Automator reinicie una aplicación y la minimice tras el reinicio? La aplicación en cuestión no tiene soporte para AppleScript.

Tengo una aplicación (versión Setapp de MoneyWiz) con la muy molesta característica de que si no se inicia al menos una vez a la semana borra todos sus archivos guardados en la nube. La ejecución continua de la aplicación no cuenta, tiene que ser (re)iniciada.

He creado un autómata de calendario script que se ejecuta cada dos noches y que reinicia la aplicación, pero que la pone en primer plano, y quiero que se lance en segundo plano. Debido a que la aplicación no tiene AppleScript no puedo usar el
tell application [...] set miniaturized
que es la solución común que encuentro cuando busco soluciones en la web.

2voto

qarma Puntos 71

Como usted dijo "He creado un autómata de calendario script que se ejecuta cada dos noches y que reinicia la aplicación, pero que trae la aplicación al frente" Supongo que tiene las partes del flujo de trabajo en su lugar que cierra su aplicación en una base de tiempo.

Parece que la parte que necesitas resolver es cómo abrir la aplicación después de cerrarla, para que no aparezca en primer plano.

Utilizando un Ejecutar AppleScript (borrando todo el código de muestra que pueda haber):

ignoring application responses
    tell the application named "..."
        if it is not running then run
    end tell
end ignoring

Debe asegurarse de que la parte de su flujo de trabajo que cierra la aplicación ha finalizado antes de pasar a intentar un relanzamiento. Si el anterior script se ejecuta mientras la aplicación está en proceso de cierre, no hará nada.


Para completar, aquí hay un ejemplo de script que manejaría el cierre y relanzamiento de una aplicación en segundo plano. Se ejecutaría utilizando un Ejecutar Shell script acción, y asume que tiene zsh instalado:

#!/usr/bin/env zsh
bgreopen () {
        pkill -xi "$*" &&
        osascript <<-OSA
            ignoring application responses    
                tell application "$*" to ¬          
                    if it is not running ¬ 
                    then run it
            end ignoring    
        OSA
} &>/dev/null

bgreopen Microsoft Teams

Sustituir "Microsoft Teams" con el nombre de su aplicación. Utiliza osascript para ejecutar el AppleScript de la parte anterior de esta respuesta, en parte para demostrar su incorporación en una solución más amplia, y en parte porque es muy fiable en el lanzamiento de aplicaciones en silencio.

El comando shell open tiene un indicador de opción -j utilizado para lanzar una aplicación oculta. En el pasado ha sido un poco menos fiable a la hora de acatar la petición de permanecer oculto, pero esto fue en una versión anterior del sistema operativo. Si quieres probar esto en su lugar, en realidad sería un método más ideal, ya que mantiene todo lo que se ejecuta en el mismo idioma en lugar de llamar dentro y fuera de otros lugares. También es una solución mucho más elegante:

#!/usr/bin/env zsh
(){    pkill -ix "$*" && 
       open  -ja "$*"
} &>/dev/null Microsoft Teams

Además, open tiene un -g que impide específicamente que las aplicaciones pasen a primer plano al iniciarse. Se utiliza independientemente de -j , se abriría la aplicación detrás de lo que estés trabajando, pero no necesariamente se ocultaría. El -j debería implicar -g también, pero tal vez no lo haga y explique mi variable kilometraje con él en el pasado. Por lo tanto, usted puede experimentar para ver lo que funciona para usted, y usted puede combinar su uso junto con: open -jga "$*" (sólo asegúrese de que a es la última de las banderas de opción inmediatamente antes de la "$*" que representa el nombre de la aplicación).


Si quieres optimizar la eficiencia de este proceso, puedes buscar en Google launchd . Es el demonio de lanzamiento de MacOS que regula la ejecución de programas según un horario, y permitiría eliminar Automator y las alarmas del calendario de la ecuación. Sólo requeriría una .plist que define la frecuencia con la que se quiere ejecutar un script, y el cuerpo de script o la ruta a un archivo script, que sería simplemente el shell script anterior.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X