Как я могу получить уведомление, когда батарея моего ноутбука полностью заряжена?

12

Иногда мое зарядное устройство остается подключенным к ноутбуку даже после завершения зарядки.

Есть ли способ получить всплывающее сообщение / уведомление, когда моя батарея полностью заряжается из-за зарядки, или есть какое-либо программное обеспечение / пакет, который может обеспечить функциональность?

Анкит
источник

Ответы:

7

Установите acpiпакет. Теперь вставьте это return0whencharging.shи сделайте его исполняемым:

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

Если echo -e "\a"издается звук, запустите его, если хотите посмотреть состояние батареи:

watch --beep return0whencharging.sh

Если он не делает никаких звуков или вы хотите уведомления и более тревогу , чем любые часы могут предоставить, установить libnotify-binи mpvи использовать вместо этого:

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

Пояснение :

Если вы посмотрите на справочную страницу для grep, вы увидите, что происходит -vобратное сопоставление и, следовательно, код возврата / состояния. -Eозначает, что это регулярное выражение. [\t ]в регулярном выражении (регулярное выражение) означает «вкладку или пространство». Следующая звезда означает «табуляция или пробел 0 или более раз». Трейлинг "$" означает, что он должен соответствовать концу строки. Итоговые grepозначает , что линии не заканчиваются в «:» любое количество вкладок или пробелов , а затем «зарядки» и конец строки должны grepвыйти с кодом состояния 0. Это означает , что grepбудет возвращать 1, пока компьютер зарядка. ifВыполнит это первый филиал , когда код состояния 0,grepexit 1когда grep выходит из 0 и exit 0когда grep существует ненулевой.

Янус Троелсен
источник
если вы хотите, чтобы эти команды были объяснены, просто спросите меня
Янус Троелсен
Я не уверен, что сделает этот grep -vE ": [\ t] * зарядки $". Не могли бы вы объяснить команды. спасибо
Ankit
добавлено объяснение
Янус Троелсен
И где этот return0whencharging.shфайл? Или, если я его создам, есть ли конкретное место, где я должен его сохранить?
Parto
@AvatarParto: не важно где. имя также не имеет значения, если вы меняете его везде
Янус Троелсен
7

Я написал небольшой скрипт, который сделает это:

снимок экрана


Автор сценария:

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

Монтаж:

Пробег:

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

Скопируйте скрипт в ~/binпапку ( почему папка ~ / bin? ):

cp batteryfull.* ~/bin

Или скопируйте его, /usr/local/binесли хотите, чтобы он был доступен для всех пользователей на вашем компьютере:

cp batteryfull.* /usr/local/bin

Затем добавьте batteryfull.shскрипт в качестве запускаемого приложения:

  • Open Dash
  • Поиск приложений для запуска
  • Дважды щелкните значок
  • Нажмите Addи заполните следующим образом:

    запуск приложения batteryfull

hg8
источник