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.