El siguiente script se ejecuta bien en la carpeta /etc y es llamado por un plist. Básicamente dice un texto cuando la batería está demasiado baja. Esta es una versión simplificada, el verdadero script es mucho más largo.
set Cap to (do shell script "ioreg -w0 -l | grep ExternalChargeCapable")
tell Cap to set {wallPower} to {last word of paragraph 1}
if wallPower = "Yes" then
return 0
else
set Pct to (do shell script "pmset -g batt | grep -Eo \"\\d+%\" | cut -d% -f1")
if Pct 10 then
display notification "Batterij 10%. Meteen opladen." with title "Batterij bijna leeg!" sound name "Sosumi"
## delay 300
say "Batterij 10%. Meteen opladen."
end if
end if
El problema es que no he encontrado una buena forma para un interruptor de apagado. El interruptor de muerte será operado por un usuario sin derechos de administrador.
Estoy abierto a cualquier sugerencia para un interruptor de apagado.
Como ejemplo, he encontrado este tema que implementa una condición si "No molestar" está activo. He insertado esto en el script y funciona bien en el propio script Editor, pero una vez que el script se copia en la carpeta /etc y es llamado por un plist la ejecución parece detenerse en esta línea:
set statusOfDND to ¬
(do shell script checkDNDstatusCMD) ¬
as number as boolean
No estoy seguro de por qué, podría ser la configuración regional (estoy usando el holandés mientras que el propietario del script original utiliza el inglés (EE.UU.).