web-dev-qa-db-fra.com

Comment puis-je recevoir une notification lorsque la batterie de mon ordinateur portable est complètement chargée?

Parfois, mon chargeur reste branché à l'ordinateur portable même après la fin du chargement.

Existe-t-il un moyen d’obtenir un message/une notification contextuelle lorsque ma batterie est pleine à cause de la charge ou existe-t-il un logiciel/package capable de fournir cette fonctionnalité?

10
Ankit

Installez le package acpi. Maintenant, mettez ceci dans return0whencharging.sh et rendez-le exécutable:

#!/bin/sh
acpi -V
if cat /proc/acpi/battery/BAT1/state | grep "charging state" | grep -vE ":[\t ]*charging$"; then
    exit 1
else
    exit 0
fi

Si echo -e "\a" émet un son, démarrez-le lorsque vous souhaitez surveiller l'état de la batterie:

watch --beep return0whencharging.sh

Si aucun son ne retentit ou si vous souhaitez une notification et une meilleure alarme que tout ce que la montre peut fournir, installez libnotify-bin et mplayer et utilisez-le à la place:

watch --errexit return0whencharging.sh; notify-send "Finished charging" && mplayer -msglevel all=0 -loop 0 /usr/share/sounds/freedesktop/stereo/alarm-clock-elapsed.oga

Explication :

Si vous consultez la page page de manuel de grep , vous pouvez constater que -v annule la correspondance, et donc le code de retour/statut. -E signifie que c'est une expression régulière. le [\t ] dans l'expression régulière (expression régulière) signifie "tabulation ou espace". L'étoile suivante signifie "onglet ou espace 0 ou plusieurs fois". Le dernier "$" signifie qu'il doit correspondre à la fin de la ligne. Le dernier grep signifie que les lignes ne se terminant pas par ":", par un nombre quelconque de tabulations ou d'espaces, puis par "en charge" et que la fin de la ligne doit faire grep quitter avec le code d'état 0. Cela signifie que grep retournera 1 tant que l'ordinateur est en charge. La if exécutera sa première branche lorsque le code d'état sera 0, ce qui signifie que nous annulons effectivement le résultat de grep, puisque nous exit 1 lorsque grep quitte 0 et exit 0 quand grep existe non nul.

6
Janus Troelsen

J'ai écrit un petit script qui fera ça:

screenshot


Script:

#!/usr/bin/env bash
while true
do
    export DISPLAY=:0.0
    battery_percent=$(acpi -b | grep -P -o '[0-9]+(?=%)')
    if on_ac_power; then
        if [ "$battery_percent" -gt 95 ]; then
            notify-send -i "$PWD/batteryfull.png" "Battery full." "Level: ${battery_percent}% "
        fi
    fi
    sleep 300 # (5 minutes)
done

Installation:

Courir:

Sudo apt-get install acpi
git clone https://github.com/hg8/battery-full-notification.git
cd battery-full-notification/
chmod +x batteryfull.sh

Copiez le script dans le dossier ~/bin ( pourquoi le dossier ~/bin? ):

cp batteryfull.* ~/bin

Ou copiez-le dans /usr/local/bin si vous voulez qu'il soit disponible pour tous les utilisateurs de votre ordinateur:

cp batteryfull.* /usr/local/bin

Ajoutez ensuite le script batteryfull.sh en tant qu'application de démarrage en:

  • Ouvrir Dash
  • Recherche de applications de démarrage
  • Double-cliquez sur l'icône
  • Cliquez sur Add et remplissez comme suit:

    startup application batteryfull

5
hg8