Quiero que esto esté basado en el sistema operativo, por lo que no necesito una conexión a Internet o un navegador abierto, etc. Simplemente es algo que puede suceder en segundo plano.
La forma más fácil de hacerlo sería con una aplicación, pero aquí se explica cómo hacerlo solo con comandos integrados del sistema operativo. Sé que quieres que sea impulsado por eventos, pero no estoy seguro de cómo lograrlo, así que aquí hay una forma de verificar el nivel de la batería, y luego hacer otra cosa si está por encima / por debajo de un umbral.
Puede considerar un launchd
proceso, esta es básicamente una tarea programada que se ejecuta cada x
minuto. A menudo son utilizados por usuarios avanzados, pero no son demasiado difíciles de configurar. Configura una tarea programada de lanzamiento con un archivo .plist que coloca en este directorio: Macintosh HD\Library\LaunchDaemons
y así es como estructura el archivo .plist;
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Debug</key>
<true/>
<key>ExitTimeOut</key>
<integer>120</integer>
<key>Label</key>
<string>com.me.BatteryInfo</string>
<key>ProgramArguments</key>
<array>
<string>/Users/yourusername/batt.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StartInterval</key>
<integer>1800</integer>
</dict>
</plist>
Si guardara ese archivo como com.me.BatteryInfo
en la LaunchDaemons
carpeta mencionada anteriormente, crearía una tarea programada que se ejecuta cada 30 minutos. El número, 1800
directamente arriba, </dict>
es el tiempo en segundos de la frecuencia con la que desea que se ejecute la tarea. Donde dice <string>/Users/yourusername/batt.sh</string>
es donde especifica qué script se ejecuta según lo programado. Debes irte <string>
e </sting>
intacto.
La línea <string>com.me.BatteryInfo</string>
es el nombre único de la tarea programada. Si va a hacer más de uno, asegúrese de que cada .plist tenga un nombre único aquí.
Lo siguiente que debe hacer es cambiar la propiedad de .plist a root
. Esto se requiere como una característica de seguridad (supongo que para detener el software / usuarios que crean tareas maliciosas programadas). Para cambiar la propiedad del archivo, haga sudo chown root \Library\LaunchDaemons\yourtask.plist
(reemplace yourtask.plist con el nombre real del archivo del .plist que creó). Esta tarea le pedirá una contraseña.
Ahora necesita crear el script que se ejecutará periódicamente. Necesita hacer un archivo .sh (un script bash) para decirle a la computadora qué hacer. Para crear un archivo .sh, abra un editor de texto de programadores, como Sublime Text o Komodo Edit . NO use Text Edit, ya que a menudo agrega texto a sus archivos que interferiría con su script. La edición de texto no debería usarse realmente para el código.
Cree un script (archivo .sh) con el siguiente código;
#!/bin/sh
percent=$(ioreg -l | awk '$3~/Capacity/{c[$3]=$5}END{OFMT="%.3f";max=c["\"MaxCapacity\""];print(max>0?100*c["\"CurrentCapacity\""]/max:"?")}')
if [ $percent > 95 ]
then
echo 'charged.'
fi
exit 0
Reemplácelo echo 'charged.'
con los comandos del terminal que le gustaría ejecutar cuando la batería esté cargada. open /Applications/Notes.app
abrirá la aplicación de Notas; Puede cambiar el directorio para abrir una aplicación diferente.
$percent > 95
Esto le indica a la siguiente línea que solo se ejecute cuando la batería está más que 95
cargada. Puedes cambiar esto a lo que quieras. El nivel de batería aquí a menudo será ligeramente diferente al que se muestra en la barra de menú en la parte superior. Si desea "funcionar cuando la batería está completamente cargada", le recomiendo dejar esto como> 95 . Si desea que la tarea se ejecute cuando la batería esté por debajo del 20%, por ejemplo, cámbiela a$percent < 20
NOTA: Debido a que esta es una tarea programada, su secuencia de comandos se ejecutará cada x
número de minutos. Esto significa que si coloca open \Applications\Notes.app
dentro de su script, la aplicación de Notes comenzará cada x
minuto (si su batería está cargada)
Esta tarea se ejecutará incluso si nadie ha iniciado sesión.
Sé que hiciste esta pregunta hace un tiempo, pero espero que esto ayude a alguien.