Voglio che questo sia basato su SO, quindi non ho bisogno di una connessione Internet o di un browser aperto ecc. Solo qualcosa che può accadere in background
Il modo più semplice per farlo sarebbe con un'applicazione, ma ecco come farlo solo con comandi OS integrati. So che vuoi che sia guidato dagli eventi, ma non sono sicuro di come farlo, quindi ecco un modo per controllare il livello della batteria, quindi fare qualcos'altro se è sopra / sotto una soglia.
Puoi considerare un launchd
processo, questa è fondamentalmente un'attività pianificata che viene eseguita ogni x
minuto. Sono spesso utilizzati da utenti esperti, ma non sono troppo difficili da configurare. Si configura un'attività pianificata di avvio con un file .plist che si inserisce in questa directory: Macintosh HD\Library\LaunchDaemons
ed è così che si struttura il file .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>
Se si salvasse quel file come com.me.BatteryInfo
nella LaunchDaemons
cartella sopra menzionata, si creerebbe un'attività pianificata che viene eseguita ogni 30 minuti. Il numero, 1800
direttamente sopra </dict>
è il tempo in secondi della frequenza con cui si desidera eseguire l'attività. Dove dice <string>/Users/yourusername/batt.sh</string>
è dove si specifica quale script viene eseguito nei tempi previsti. Devi lasciare <string>
e </sting>
intatto.
La linea <string>com.me.BatteryInfo</string>
è il nome univoco dell'attività pianificata. Se hai intenzione di crearne più di uno, assicurati che ogni .plist abbia un nome univoco qui.
La prossima cosa che devi fare è cambiare la proprietà del .plist in root
. Ciò è necessario come funzionalità di sicurezza (per impedire che software / utenti creino attività dannose pianificate, suppongo). Per modificare la proprietà del file, eseguire sudo chown root \Library\LaunchDaemons\yourtask.plist
(sostituire yourtask.plist con il nome file effettivo del .plist creato). Questa attività richiederà una password.
Ora devi creare lo script che verrà eseguito periodicamente. Devi creare un file .sh (uno script bash) per dire al computer cosa fare. Per creare un file .sh, apri un editor di testo per programmatori, come Sublime Text o Komodo Edit . NON utilizzare Modifica testo, poiché spesso aggiunge testo ai file che interferirebbe con lo script. La modifica del testo non dovrebbe davvero essere utilizzata per il codice.
Crea uno script (file .sh) con il seguente codice;
#!/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
Sostituire echo 'charged.'
con i comandi del terminale che si desidera eseguire quando la batteria è carica. open /Applications/Notes.app
aprirà l'applicazione Notes; puoi cambiare la directory per aprire un'altra applicazione.
$percent > 95
Questo dice alla riga successiva di funzionare solo quando la batteria è più che 95
carica. Puoi cambiarlo come preferisci. Il livello della batteria qui sarà spesso leggermente diverso da quello che viene visualizzato nella barra dei menu in alto. Se si desidera "eseguire quando la batteria è completamente carica", si consiglia di lasciare questo valore> 95 . Se si desidera eseguire l'attività quando la batteria scende al di sotto del 20%, ad esempio, cambiarla in$percent < 20
NOTA: poiché si tratta di un'attività pianificata, lo script verrà eseguito ogni x
numero di minuti. Ciò significa che se inserisci lo open \Applications\Notes.app
script, l'applicazione Note verrà avviata ogni x
minuto (se la batteria è carica)
Questa attività verrà eseguita anche se nessuno ha effettuato l'accesso.
So che hai fatto questa domanda qualche tempo fa, ma spero che questo possa aiutare qualcuno.