Ejecutar script a través de launchd sin indicaciones molestas

2

Tengo un applecript que comprueba la batería de mi macbook y fuerza la hibernación cuando alcanza un cierto nivel, luego de mostrar una cuenta regresiva de 60 segundos.

Lo he configurado con éxito para ejecutarse en segundo plano a través de launchd, cada 30 segundos, como una secuencia de comandos, pero esto causa un ícono de rebote molesto en el dock.

Entonces, guardé el script como una aplicación y ahora el icono de la base ya no rebota, pero si estoy en la aplicación de la terminal (por ejemplo) y presiona CONTROL justo cuando se inicia en segundo plano, aparece el temido cuadro de diálogo "Presione Ejecutar para ejecutar este script o Salir para salir". Y sí, me he asegurado de que cuando lo guarde, la opción "Pantalla de inicio" NO esté seleccionada.

Este cuadro de diálogo aparece detrás de todas las demás ventanas, por lo que no tengo idea de que sucedió y mi aplicación / secuencia de comandos está bloqueada en este punto.

¿Alguna sugerencia sobre cómo superar esto para poder ejecutar mi script sin diálogos molestos ni iconos que reboten?

Gracias.

EDITAR: una idea que me vino a la mente fue usar la opción ExitTimeOut en el archivo plist. La página del manual dice:

ExitTimeOut <integer>
    The amount of time launchd waits before sending a SIGKILL signal. The default value is 20 seconds. The
    value zero is interpreted as infinity.

Así que lo agregué así:

<key>ServiceDescription</key>
    <string>Battery Monitor</string>
<key>StartInterval</key>
    <integer>30</integer>
<key>ExitTimeOut</key>
    <integer>90</integer>

luego descargó / cargó el archivo .plist. Desafortunadamente no parece funcionar. ¿Entiendo mal esta opción?

    
pregunta Vic 01.04.2014 - 13:47

1 respuesta

0

Convertir a script de shell y par de AppleScript

Convierta su cheque para el estado de la batería a un script de shell. El script de shell puede ejecutarse regularmente a través de un ticket de trabajo launchd sin presentar ninguna interfaz de usuario.

Cuando se cumplen las condiciones, su script de shell puede iniciar un AppleScript para interactuar con el usuario.

Esto supone que utiliza un enfoque ~/Library/LaunchAgent para el ticket de trabajo launchd. Un trabajo de inicio en todo el equipo no podrá iniciar el componente AppleScript en la sesión de usuario adecuada.

Como alternativa, puede utilizar una herramienta de terceros para activador de un evento de batería , como Power Manager ; esto evitaría utilizar su batería y mejorar su rendimiento.

    
respondido por el Graham Miln 07.04.2014 - 12:28

Lea otras preguntas en las etiquetas