J'ai une installation 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 que c'est une douleur (Même si j'ai un lanceur mis en place qui exécute le script lorsqu'on clique dessus) et je voudrais savoir ce que je dois faire pour que le script soit exécuté chaque fois que je branche/débranche mon ordinateur portable du chargeur.
Réponses
Trop de publicités?Voici un script assez simple qui peut être ajouté comme application de démarrage et qui fonctionnera en continu. Insérez la commande que vous voulez exécuter lors de la détection d'un changement de méthode d'alimentation, comme indiqué 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 dans /etc/pm/power.d sont exécutés avec un argument "true" lorsque vous le branchez 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 script à 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 dans le 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, remplacezBAT0
si le nom de la batterie est différent dans votre cas -
La ligne commençant par
charging state:
du fichier contient l'état de la batterie, à savoir si elle est en charge, en décharge ou chargée. -
Nous enregistrons 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.