Jak mogę otrzymać powiadomienie, gdy bateria mojego laptopa zostanie w pełni naładowana?


12

Czasami moja ładowarka pozostaje podłączona do laptopa nawet po zakończeniu ładowania.

Czy istnieje sposób na wyświetlenie wyskakującego komunikatu / powiadomienia, gdy moja bateria jest pełna z powodu ładowania, czy też jest jakieś oprogramowanie / pakiet, który może zapewnić tę funkcjonalność?

Odpowiedzi:


7

Zainstaluj acpipakiet. Teraz włóż to return0whencharging.shi zrób to:

#!/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

Jeśli echo -e "\a"wydaje dźwięk, zacznij to, gdy chcesz sprawdzić stan baterii:

watch --beep return0whencharging.sh

Jeśli nie ma żadnego dźwięku lub chcesz zawiadomienie i lepsze niż cokolwiek alarm zegarek może dostarczy, zainstaluje libnotify-bini mpvi używać zamiast tego:

while return0whencharging.sh; do sleep 1; done; notify-send "Finished charging" && mpv -loop /usr/share/sounds/freedesktop/stereo/alarm-clock-elapsed.oga

Objaśnienie :

Jeśli spojrzysz na stronę man dla grep , zobaczysz, że -vodwraca dopasowanie, a zatem kod powrotu / statusu. -Eoznacza, że ​​jest to wyrażenie regularne. [\t ]w regex (wyrażenie regularne) oznacza „kartę lub przestrzeń”. Następująca gwiazda oznacza „tabulator lub spacja 0 lub więcej razy”. Końcowy znak „$” oznacza, że ​​powinien on pasować do końca linii. Ostatnia grepoznacza, że ​​wiersze NIE kończą się „:”, dowolną liczbą tabulatorów lub spacji, a następnie „ładowaniem”, a koniec wiersza powinien grepzakończyć się kodem stanu 0. Oznacza to, że grepzwróci 1, o ile komputer jest ładowanie. ifWykona To pierwszy oddział, gdy kod stanu jest 0,grepexit 1kiedy grep kończy 0 i exit 0kiedy grep istnieje niezerowa.


jeśli chcesz wyjaśnić te polecenia, po prostu zapytaj mnie
Janus Troelsen,

nie jestem pewien, co zrobi ten grep -vE ": [\ t] * ładowanie $". Czy możesz wyjaśnić polecenia. dzięki
Ankit

dodano wyjaśnienie
Janus Troelsen

A gdzie jest ten return0whencharging.shplik? A jeśli go utworzę, czy jest jakieś miejsce, które muszę zapisać?
Parto

@AvatarParto: nie ważne gdzie. nazwa też nie ma znaczenia, o ile zmienisz ją wszędzie
Janus Troelsen

7

Napisałem mały skrypt, który to zrobi:

zrzut ekranu


Scenariusz:

#!/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

Instalacja:

Biegać:

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

Skopiuj skrypt do ~/binfolderu ( dlaczego folder ~ / bin? ):

cp batteryfull.* ~/bin

Lub skopiuj do, /usr/local/binjeśli chcesz, aby był dostępny dla wszystkich użytkowników na twoim komputerze:

cp batteryfull.* /usr/local/bin

Następnie dodaj batteryfull.shskrypt jako aplikację startową poprzez:

  • Otwórz Dash
  • Wyszukaj aplikacje startowe
  • Kliknij dwukrotnie ikonę
  • Kliknij Addi wypełnij w następujący sposób:

    aplikacja do uruchamiania pełna bateria


0

Oto Crontab, którego używam

  1. Powiadom, czy bateria jest pełna (równa 100%)

    */1 * * * * if [ $(cat /sys/class/power_supply/BAT0/capacity) -eq 100 ]; then XDG_RUNTIME_DIR=/run/user/$(id -u) notify-send Hey "Battery Full"; fi
    
  2. Powiadom, jeśli poziom naładowania baterii jest niski (mniej niż 10%)

    */1 * * * * if [ $(cat /sys/class/power_supply/BAT0/capacity) -le 10 ]; then XDG_RUNTIME_DIR=/run/user/$(id -u) notify-send Hey "Battery Low"; fi
    

Przykład obrazu powiadomienia:

Przykład obrazu powiadomienia

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.