Je veux que ce soit basé sur le système d'exploitation, donc je n'ai pas besoin d'une connexion Internet ou d'un navigateur ouvert, etc. Juste quelque chose qui peut se produire en arrière-plan
La façon la plus simple de le faire serait avec une application, mais voici comment le faire avec les commandes intégrées du système d'exploitation uniquement. Je sais que vous voulez qu'elle soit pilotée par des événements, mais je ne suis pas sûr de savoir comment y parvenir. Voici donc une façon de vérifier le niveau de la batterie, puis de faire autre chose s'il est supérieur ou inférieur à un seuil.
Vous pouvez envisager un launchd
Il s'agit essentiellement d'une tâche planifiée qui s'exécute à chaque x
minutes. Ils sont souvent utilisés par des utilisateurs avancés, mais ne sont pas trop difficiles à mettre en place. Vous configurez une tâche planifiée launchd avec un fichier .plist que vous placez dans ce répertoire : Macintosh HD\Library\LaunchDaemons
et c'est ainsi que vous structurez le fichier .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 vous enregistrez ce fichier en tant que com.me.BatteryInfo
dans le LaunchDaemons
Le dossier mentionné ci-dessus crée une tâche planifiée qui s'exécute toutes les 30 minutes. Le numéro, 1800
directement au-dessus </dict>
est la durée en secondes de la fréquence à laquelle vous souhaitez que la tâche soit exécutée. Où il est écrit <string>/Users/yourusername/batt.sh</string>
est l'endroit où vous spécifiez quel script s'exécute sur le planning. Vous devez laisser <string>
et </sting>
intact.
La ligne <string>com.me.BatteryInfo</string>
est le nom unique de la tâche planifiée. Si vous devez en créer plusieurs, assurez-vous que chaque fichier .plist porte un nom unique.
La prochaine chose que vous devez faire est de changer la propriété du .plist en root
. Ceci est nécessaire pour des raisons de sécurité (pour empêcher les logiciels/utilisateurs de créer des tâches malveillantes programmées, je suppose). Pour changer la propriété du fichier, faites sudo chown root \Library\LaunchDaemons\yourtask.plist
(remplacez yourtask.plist par le nom de fichier réel du .plist que vous avez créé). Cette tâche vous demandera un mot de passe.
Maintenant vous devez créer le script qui sera exécuté périodiquement. Vous devez créer un fichier .sh (un script bash) pour indiquer à l'ordinateur ce qu'il doit faire. Pour créer un fichier .sh, ouvrez un éditeur de texte pour programmeurs, tel que Texte sublime o Komodo Edit . N'utilisez PAS Text Edit, car il ajoute souvent du texte à vos fichiers qui interférerait avec votre script. L'édition de texte ne devrait pas vraiment être utilisée pour le code.
Faites un script (fichier .sh) avec le code suivant ;
#!/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
Remplacer echo 'charged.'
avec la ou les commandes du terminal que vous souhaitez exécuter lorsque la batterie est chargée. open /Applications/Notes.app
ouvrira l'application Notes ; vous pouvez changer le répertoire pour ouvrir une autre application.
$percent > 95
Cela indique à la ligne suivante de ne s'exécuter que lorsque la batterie est supérieure à 95
chargé. Vous pouvez modifier cette valeur comme vous le souhaitez. Le niveau de la batterie est souvent légèrement différent de ce qui est affiché dans la barre de menu en haut de l'écran. Si vous souhaitez que l'application fonctionne lorsque la batterie est entièrement chargée, je vous recommande de laisser la valeur > 95. . Si vous voulez que la tâche s'exécute lorsque votre batterie passe en dessous de 20 % par exemple, changez-le en $percent < 20
NOTE : Comme il s'agit d'une tâche planifiée, votre script sera exécuté chaque x
nombre de minutes. Cela signifie que si vous mettez open \Applications\Notes.app
à l'intérieur de votre script, l'application Notes démarrera chaque x
minutes (si votre batterie est chargée)
Cette tâche sera exécutée même si personne n'est connecté.
Je sais que vous avez posé cette question il y a un certain temps, mais j'espère que cela pourra aider quelqu'un.