web-dev-qa-db-fra.com

Comment puis-je obtenir une alerte lorsque ma batterie est sur le point de mourir sous Linux Mint?

Cela m'arrive plus que je voudrais admettre, mais parfois, je ne remarque que le pouvoir devient bas, car il ne se présente que dans ma barre d'état, puis l'ordinateur ne cesse de quitter. Je voudrais une grande alerte qui me met en garde avant que cela se produise. Y a-t-il un moyen de me alerter? Ubuntu a une belle popup qui vous dit qu'il devient bas.

32
Travis Reeder

écrivez un script!

battery_level=`acpi -b | grep -P -o '[0-9]+(?=%)'`
if [ $battery_level -le 10 ]
then
    notify-send "Battery low" "Battery level is ${battery_level}%!"
fi

puis le cron pour courir toutes les quelques minutes environ. Mais oui, si vous pouvez le faire à travers l'interface graphique, c'est probablement un moyen bien meilleur de le faire.

27
hdgarrood

re: Réponse de HDGARDOOD, Réglage cron _ pour exécuter notify-send effectivement s'est avéré être douloureusement finiky. (Je pense crontab -e persiste à travers les redémarrages par défaut, heureusement). J'ai suivi plusieurs guides, je ne suis pas sûr de ce qui le corrige exactement à la fin, mais voici ma configuration complète pour exécuter le vérificateur toutes les 5 minutes:

$ crontab -e

*/5 * * * * sh /home/nrw/.notify-send_setup
*/5 * * * * sh /home/nrw/.battnotif

$ cat .notify-send_setup

#!/bin/bash
touch $HOME/.dbus/Xdbus
chmod 600 $HOME/.dbus/Xdbus
env | grep DBUS_SESSION_BUS_ADDRESS > $HOME/.dbus/Xdbus
echo 'export DBUS_SESSION_BUS_ADDRESS' >> $HOME/.dbus/Xdbus

exit 0

$ cat .battnotif

#!/bin/bash
export DISPLAY=:0
XAUTHORITY=/home/nrw/.Xauthority

if [ -r "$HOME/.dbus/Xdbus" ]; then
    . "$HOME/.dbus/Xdbus"
fi

battery_level=`acpi -b | grep -P -o '[0-9]+(?=%)'`

# I tried to only notify when not charging, but could not get it to work
# STATUS=$(cat /sys/class/power_supply/ADP1/online)
# if [ $battery_level -le 15 ] && [ $STATUS == "0" ]

if [ $battery_level -le 15 ]
then
    /usr/bin/notify-send -u critical "Battery low" "Battery level is ${battery_level}%!"
    echo 'batt low' >> /home/nrw/cron.log
fi

echo 'ran batt' >> /home/nrw/cron.log

Assurez-vous de chmod +x Les scripts Bash.

7
orangenarwhals

Puisque vous courez apparemment à la cannelle, il suffit d'installer applet de batterie avec surveillance et arrêt (BAMS) .

Cliquez avec le bouton droit de la souris sur un panneau → + Ajouter des applets au panneau Applets disponibles , tapez 'Bams' dans le widget de recherche et installer et le configurer.

Ce n'est pas le plus éclairé, mais jusqu'à présent, il m'a déjà alerté quand j'avais mon ordinateur portable non involonté.

4
Michael Scheper

Twist mineur - sur Knoppix (accordé, non à la menthe utilisée par OP) Notify-Send n'était pas disponible (la libnotify-bin package n'est pas installée), alors j'ai également trouvé cela utile pour l'alerte:

xmessage Battery low & mplayer /usr/lib/libreoffice/share/gallery/sounds/beam.wav

Je viens de jeter cela dans la commande d'alarme du panneau de surveillance de la batterie de LXDE, pas besoin d'un script.

Cela suppose que vous avez installé LibreOffice, mais que .wav fait un bon son de puissance basse. Il n'y a pratiquement aucun .ogg sur Knoppix.

2
Randall

J'ai eu le même problème et j'ai compris une solution de contournement. J'ai installé des référentiels de Mint Linux une application appelée gkrellm. Il surveille beaucoup de choses sur votre machine et il y a une batterie. Configuration avec des alarmes, cela fonctionne pour moi comme un charme.

plus d'infos à:

http://www.gkrellm.net/

1
Marcello

J'ai le même problème et c'est vraiment frustrant. J'ai résolu en utilisant le script -batteryert.sh:

#!/bin/bash

BATTERY=$(upower -e | grep 'BAT')

while :
do
    BATTERY_PERCENTAGE=$(upower -i $BATTERY|grep percentage|awk '{ print $2 }'|sed s/'%'/''/g)
    CABLE=$(upower -d | grep -n2 line-power | grep online | awk '{ print $3 }')

    if [[ "$BATTERY_PERCENTAGE" -lt "10" && $CABLE = "no" ]]; then

        notify-send --urgency=critical "WARNING: Battery is about to die"  "Plug in the power cable"
        play /usr/share/sounds/KDE-Sys-Warning.ogg &> /dev/null 
    fi

sleep 10

done

J'utilise KDE mais vous pouvez l'utiliser avec chaque environnement de bureau. Vous n'avez pas à exécuter cela comme utilisateur root ou de devenir fou de la syntaxe de crontab. Vous n'avez besoin que de modifier le son de notification si vous souhaitez une alerte sonore. Si vous ne pouvez pas démarrer le script automatiquement lorsque l'environnement de bureau commence à placer le script dans $ utilisateur/bin dossier avec le script batteryertTlauncher.sh Script:

#!/bin/bash

function getRunningProcesses 
{
    ps -aux | grep -v grep | grep BatteryAlert.sh
}

if [[ -n "$(getRunningProcesses)" ]] ; then
    exit
fi

BatteryAlert.sh&

Assurez-vous qu'ils sont exécutables:

chmod u+x $USER/bin/BatteryAlert*

Ensuite, lancez simplement la commande suivante:

ln -s /home/$(USER)/bin/BatteryAlertLauncher.sh .config/autostart/

Vous pouvez également exécuter le script d'alerte manuellement à partir de bash en entrant cette commande:

BatteryAlertLauncher.sh
1
Bemipefe

Comme je n'ai pas de shell de gnome ni de cannelle installé, je ne peux pas être d'aide directe car l'accès à la source pourrait être beaucoup pratique car il est plutôt facile d'ajouter une telle extension rudimentaire avec JavaScript.

Vous devriez ouvrir:

/USR/Share/cinnamon/js/ui/status/power.js

et rechercher pourcentagetext - Par la suite, vous devriez pouvoir ajouter un message ou une alerte contextuelle.

0
nesyphlopanuri

C'est comme ça que je l'ai fait sur mon Arch Linux avec Gnome comme de:

#!/bin/bash

eval "export $(egrep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep -u $LOGNAME gnome-session)/environ)";
battery_level=`acpi -b | grep -P -o '[0-9]+(?=%)'`

STATUS=$(cat /sys/class/power_supply/ACAD/online)
if [ $battery_level -le 15 ] && [ $STATUS == "0" ]
then
    /usr/bin/notify-send -u critical "Battery low" "Battery level is ${battery_level}%!"
fi

Le mot ACAD in STATUS=$(cat /sys/class/power_supply/ACAD/online) va changer en fonction de l'ordinateur portable. Il est utilisé pour trouver si votre tour est branché sur un adaptateur secteur ou non. Voici comment mon crontab ressemble à:

* * * * * bash <path to script>

N'oubliez pas de rendre le script exécutable avec chmod u+x <path to script>

0
daltonfury42

Téléchargez une applet appelée BAMS. Il vous alertera automatiquement lorsque la batterie atteint un certain niveau décidé par vous. C'est la solution la plus simple.

0
Pranay Saraiwala

Ce simple fonctionne bien pour moi, avec juste simple acpi package nécessaire pour être installé (pas de Damons, des environnements de bureau spécifiques ou similaires).

Dans votre utilisateur crontab (crontab -e) Mettez ce qui suit (tous en une ligne, il est divisé pour la lisibilité ici):

*/3 * * * * acpi --battery | 
    awk -F, '/Discharging/ { if (int($2) < 15) print }' | xargs -ri 
    env DISPLAY=:0 zenity --warning --text "battery low\n{}"

Ce qu'il fait est le niveau de la batterie de vérification (acpi --battery) et si vous n'êtes pas connecté au chargeur (/Discharging/) et si la batterie est < 15%, ce sera toutes les 3 minutes (*/3) Afficher le message via zenity _ pour vous inscrire.

Au lieu de zénity, vous pouvez plutôt utiliser xmessage (sur une machine vraiment spartante) ou même quelque chose comme aplay -q /usr/lib/libreoffice/share/gallery/sounds/cow.wav Pour les notifications audio (qui ont avantageusement que cela n'interrompre pas votre taper du clavier et fonctionnera même pour les ordinateurs portables multi-utilisateurs avec plusieurs sessions, où DISPLAY=:0 le piratage échouerait)

Si vous avez également besoin de suspendre/hibernation de la machine à certains niveaux critique, voir cette réponse

0
Matija Nalis