[Script] notification batterie basse i3wm
Publié : jeu. 07 sept. 2017, 23:55
Salut
Hier j'ai pris un peu de temps pour faire un petit script qui lancerais des alertes quand le niveau de batterie serait inférieur à 15% et qui suspend le pc à moins de 5%.
Tout marche le script n'est pas le problème, sauf le "systemctl suspend" qui ne marche pas dans le script. Bref le but est quand même d'avoir un script automatisé qui se lance dès le boot ou l'ouverture de la session.
J'ai donc rajouter une ligne dans ma config' d'I3, exec /usr/bin/script, et avant ça je lance le daemon de notification.
Une fois que j'ai logout et login je regarde les pid des process en cours et je vois bien "/usr/bin/script" avec le pid 499 donc ça devrait marcher. Mais malheureusement ça ne fonctionne pas.
Quand je lance le script en console tout marche parfaitement (sauf le suspend ^^)..
Bref c'est peut-être pas très clair, mais comment m'assurer qu'un script bash soit lancer au démarrage de la session graphique (c'est mieux pour des notification graphique) et qu'il fonctionne vraiment ?
+++
Pour le script ça se passe ici:
#!/bin/bash
LOW_BATTERY="15"
CRITICAL_BATTERY="5"
BATTERY_PATH="/sys/class/power_supply/BAT0/"
CURRENT_BATTERY=$(cat $BATTERY_PATH/capacity)
STOP="0"
function batteryAction {
NOTIFY="0"
if [ "$1" -lt "$LOW_BATTERY" ]; then
notify-send "Battery is low - $CURRENT_BATTERY%"
NOTIFY="1"
elif [ "$1" -lt "$CRITICAL_BATTERY" ]; then
systemctl suspend
fi
}
while true
do
BATTERY_STATUS=$(cat $BATTERY_PATH/status)
if [ "$BATTERY_STATUS" == "Discharging" ] && [ "$STOP" -eq "0" ]; then
batteryAction $CURRENT_BATTERY
if [ "$NOTIFY" -eq "1" ]; then
STOP="1"
fi
elif [ "$BATTERY_STATUS" == "Charging" ]; then
STOP="0"
elif [ "$BATTERY_STATUS" == "Full" ]; then
STOP="0"
fi
echo $BATTERY_STATUS #verification test
sleep 2
done
Hier j'ai pris un peu de temps pour faire un petit script qui lancerais des alertes quand le niveau de batterie serait inférieur à 15% et qui suspend le pc à moins de 5%.
Tout marche le script n'est pas le problème, sauf le "systemctl suspend" qui ne marche pas dans le script. Bref le but est quand même d'avoir un script automatisé qui se lance dès le boot ou l'ouverture de la session.
J'ai donc rajouter une ligne dans ma config' d'I3, exec /usr/bin/script, et avant ça je lance le daemon de notification.
Une fois que j'ai logout et login je regarde les pid des process en cours et je vois bien "/usr/bin/script" avec le pid 499 donc ça devrait marcher. Mais malheureusement ça ne fonctionne pas.
Quand je lance le script en console tout marche parfaitement (sauf le suspend ^^)..
Bref c'est peut-être pas très clair, mais comment m'assurer qu'un script bash soit lancer au démarrage de la session graphique (c'est mieux pour des notification graphique) et qu'il fonctionne vraiment ?
+++
Pour le script ça se passe ici:
#!/bin/bash
LOW_BATTERY="15"
CRITICAL_BATTERY="5"
BATTERY_PATH="/sys/class/power_supply/BAT0/"
CURRENT_BATTERY=$(cat $BATTERY_PATH/capacity)
STOP="0"
function batteryAction {
NOTIFY="0"
if [ "$1" -lt "$LOW_BATTERY" ]; then
notify-send "Battery is low - $CURRENT_BATTERY%"
NOTIFY="1"
elif [ "$1" -lt "$CRITICAL_BATTERY" ]; then
systemctl suspend
fi
}
while true
do
BATTERY_STATUS=$(cat $BATTERY_PATH/status)
if [ "$BATTERY_STATUS" == "Discharging" ] && [ "$STOP" -eq "0" ]; then
batteryAction $CURRENT_BATTERY
if [ "$NOTIFY" -eq "1" ]; then
STOP="1"
fi
elif [ "$BATTERY_STATUS" == "Charging" ]; then
STOP="0"
elif [ "$BATTERY_STATUS" == "Full" ]; then
STOP="0"
fi
echo $BATTERY_STATUS #verification test
sleep 2
done