Kennst du das? Du arbeitest grad und dann macht’s „ziup“ und der Bildschirm ist schwarz. Da war wohl der Akku alle. Nachdem mir das bereits einige male passiert ist, habe ich mir heute ein kleines Bash-Script geschrieben, welches fortlaufend auf den Akkustatus schaut und mir Bescheid gibt falls der Saft alle wird.
Zu meiner Verteidigung muss ich sagen, dass ist das erste sinnvolle Bash-Skript, welches ich bisher geschrieben habe.
Abhängigkeiten
Folgende Pakete werden benötigt:
- systemd (logisch, siehe Titel)
- TLP (Funktioniert am besten mit Thinkpads)
- zenity (Für die Popups)
Skripte
Als erstes benötigen wir das eigentliche Skript. Das speichern wir am besten in /usr/lib/systemd/scripts/battery.sh ab:
#!/bin/bash #Deinen Nutzernamen hier einfügen USERNAME=foo #Maximaler Füllstand BAT_MAX=`cat /sys/class/power_supply/BAT0/energy_full` #Wurde die Meldung schonmal angezeigt? LOWER10=0 LOWER5=0 LOWER1=0 #Service mach mal... while true; do #Aktuellen Wert einlesen BAT_NOW=`cat /sys/class/power_supply/BAT0/energy_now` PERCENT=`gawk " BEGIN {OFMT=\"%.0f\";print (100/$BAT_MAX) * $BAT_NOW}"` # echo $PERCENT #Überprüfen auf Prozentstand if [[ $PERCENT -le 10 && $LOWER10 -ne 1 ]] ; then sudo -u $USERNAME zenity --info --text "Akku unter 10% ($PERCENT)" LOWER10=1 fi if [[ $PERCENT -le 5 && $LOWER5 -ne 1 ]] ; then sudo -u $USERNAME zenity --warning --text "Akku unter 5% ($PERCENT)" LOWER5=1 fi if [[ $PERCENT -le 1 && $LOWER1 -ne 1 ]] ; then LOWER1=1 systemctl suspend fi sleep 10 done
[edit]nun musst du nur noch die eine $USERNAME-Variable ändern[/edit]
Dann brauchen wir noch ein Unit-File, auf dessen Basis systemd das Skript startet. Das liegt unter /usr/lib/systemd/system/battery.service:
[Unit] Description=Looking for Battery State [Service] Type=simple Environment=DISPLAY=:0 ExecStart=/usr/lib/systemd/scripts/battery.sh [Install] WantedBy=multi-user.target
Aktiviere den Service noch mit sudo systemctl enable battery.service und wenn du das sofort brauchst, machst du ein sudo systemctl start battery.service.
Viel Spaß damit. Auf Verbesserungen am Code freue ich mich natürlich immer.