J'ai une configuration conky qui affiche le niveau de ma batterie. Le problème est que, chaque fois que je branche/débranche mon ordinateur portable du chargeur, je dois exécuter le script conky-startup pour qu'il s'affiche correctement. Je trouve cela pénible (même si j'ai un lanceur configuré pour exécuter le script lorsque l'utilisateur clique dessus) et j'aimerais savoir ce que je dois faire pour que le script s'exécute chaque fois que je branche/débranche mon ordinateur portable du chargeur.
Voici un script assez simple qui peut être ajouté en tant qu'application de démarrage et sera exécuté en continu. Insérez la commande que vous souhaitez exécuter lors de la détection du changement de méthode d'alimentation, comme spécifié dans les commentaires.
#!/bin/bash
# Author: Serg Kolo
# Date: June 17,2015
# Description: this script detects changes in
# the powering method, and does something user
# specifies in appropriate field
on_ac_power
PREVIOUS=$(echo $?)
while [ 1 ]; do
# check if we're on ac power or not
on_ac_power
CURRENT=$(echo $?)
# check if previous values are current
# are different. If they are
# raise the flag.
if [ $CURRENT -ne $PREVIOUS ]; then
echo things changed
# Insert commands you wanna run here
# in the space below this comment
echo running custom stuff
# when done: make current value previous
# for future comparison
PREVIOUS=$(echo $CURRENT )
else
# if previous values and current are same
# it means we didn't switch from battery to
# ac or vice versa; do nothing
continue
fi
sleep 1
done
Lorsque vous branchez/débranchez un câble d'alimentation, tous les scripts du fichier /etc/pm/power.d sont exécutés avec un argument "true" lorsque vous vous connectez et un argument "false" lorsque vous le débranchez.
Ajouter un script à la fin de ce fichier devrait le faire fonctionner.
Si vous avez beaucoup de scripts à exécuter, vous devriez essayer d’ajouter une ligne qui ressemble à ceci:
if [ -f /path/to/the/script ]; then
. /path/to/the/script
fi
Vous devrez probablement vous assurer que le script du répertoire .../power.d/est exécutable par:
cd /etc/pm/power.d/
chmod +x ./name_of_file
Pour plus d'informations, consultez cette réponse: Comment puis-je exécuter un script lorsque l'alimentation est branchée ou débranchée?
Voici une approche générique:
#!/bin/bash
status="$(grep -Po '^charging\s+state:\s+\K.*$' /proc/acpi/battery/BAT0/state)"
if [[ $status = 'charging' ]]; then
##Charging, Do something
Elif [[ $status = 'discharging' ]]; then
##Discharging, Do something
Elif [[ $status = 'charged' ]]; then
##Charged, Do something
else
##Battery not found, Do something
fi
/proc/acpi/battery/BAT0/state
contient l'état de la batterie, remplacez BAT0
si le nom de la batterie est différent dans votre cas
La ligne commençant par charging state:
du fichier indique si la batterie est en cours de chargement, de déchargement ou de charge
Nous sauvegardons la chaîne d'état de cette ligne dans la variable status
En fonction de la valeur de status
, nous pouvons faire ce que nous voulons.