I want this to be OS based, so I don't need an internet connection or a browser open etc. Just something that can happen in the background
Il modo più semplice per farlo sarebbe con un'applicazione, ma ecco come farlo solo con i comandi OS incorporati. So che vuoi che sia guidato dagli eventi, ma non sono sicuro di come ottenerlo, quindi ecco un modo per controllare il livello della batteria, quindi fare qualcos'altro se è sopra / sotto una soglia.
Potresti prendere in considerazione un processo launchd
, questa è fondamentalmente un'attività pianificata che esegue ogni x
minuti. Sono spesso utilizzati dagli utenti esperti, ma non sono troppo difficili da configurare. Configura un'attività avviata di launchd con un file .plist che inserisci in questa directory: Macintosh HD\Library\LaunchDaemons
e questo è il modo in cui strutturi 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 dovessi salvare quel file come com.me.BatteryInfo
nella cartella LaunchDaemons
menzionata sopra, 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 in base alla pianificazione. Devi lasciare <string>
e </sting>
intatto.
La riga <string>com.me.BatteryInfo</string>
è il nome univoco dell'attività pianificata. Se ne vuoi fare più di uno, assicurati che ogni .plist abbia un nome univoco qui.
La prossima cosa che devi fare è cambiare la proprietà di .plist in root
. Questo è richiesto come funzionalità di sicurezza (per impedire al software / agli utenti di creare attività maligne pianificate, presumo). Per modificare la proprietà del file, fai sudo chown root \Library\LaunchDaemons\yourtask.plist
(sostituisci yourtask.plist con il nome file effettivo del file .plist che hai creato). Questa attività ti richiederà una password.
Ora è necessario creare lo script che verrà eseguito periodicamente. È necessario creare un file .sh (uno script di bash) per dire al computer cosa fare. Per creare un file .sh, apri un editor di testo per programmatori, come Testo sublime o Komodo Modifica . NON utilizzare Text Edit, poiché spesso aggiunge del testo ai tuoi file che interferirebbe con il tuo script. La modifica del testo non deve essere realmente 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
Sostituisci echo 'charged.'
con i comandi del terminale che desideri eseguire quando la batteria è carica. open /Applications/Notes.app
aprirà l'applicazione Notes; puoi cambiare la directory per aprire un'applicazione diversa.
$percent > 95
Indica alla riga successiva di eseguire solo quando la batteria è caricata per più di 95
. Puoi cambiarlo in qualsiasi cosa tu voglia. 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 come > 95 .
Ad esempio, se si desidera eseguire l'attività quando la batteria scende al di sotto del 20%, modificarla in $percent < 20
NOTA: poiché questa è un'attività pianificata, lo script eseguirà ogni x
numero di minuti. Ciò significa che se inserisci open \Applications\Notes.app
all'interno del tuo script, l'applicazione Notes inizierà ogni x
minuti (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.