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

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

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

12
задан 31 July 2012 в 23:25

4 ответа

Установите 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 ] в regex (регулярное выражение) означает "вкладку или пространство". Следующая звезда заставляет его означать "вкладку или расположить с интервалами 0 или больше раз". Запаздывающий "$" означает, что должен соответствовать концу строки. Финал grep средства, что строки, НЕ заканчивающиеся в a ":", любое количество вкладок или пробелов и затем "зарядки" и конца строки должно сделать grep выход с кодом состояния 0. Это означает это grep возвратится 1, пока компьютер заряжается. if выполнится это - первое ответвление, когда код состояния 0, что означает, что мы эффективно инвертируем результат grep, так как мы exit 1 когда grep выходит 0 и exit 0 когда grep существует ненулевой.

7
ответ дан 31 July 2012 в 23:25

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

screenshot


Скрипт: [ 1118]

#!/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 folder? ):

cp batteryfull.* ~/bin

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

cp batteryfull.* /usr/local/bin

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

  • Open Dash
  • Поиск Автозагрузка приложений
  • Дважды щелкните значок [ 1114]
  • Нажмите Добавить и заполните следующим образом:

    startup application batteryfull

0
ответ дан 31 July 2012 в 23:25

Вот Crontab, который я использую

  1. Уведомлять, если батарея полная (равно 100%)

    */1 * * * * if [ $ (cat /sys/class/power_supply/BAT0/capacity) -eq 100 ]; затем XDG_RUNTIME_DIR=/run/user/$(id -u) notify-send Hey "Battery Full"; фи
    
  2. Уведомлять, если уровень заряда батареи низкий (меньше или равен 10%)

    */1 * * * * if [ $(cat /sys/class/power_supply/BAT0/capacity) - ле 10]; затем XDG_RUNTIME_DIR=/run/user/$(id -u) notify-send Hey "Battery Low"; фи
    

Пример изображения уведомления:

Example Notification Image

1
ответ дан 21 April 2020 в 19:18

Я был искал то же самое и нашел это расширение, и оно работает, как и ожидалось.

-1
ответ дан 5 August 2020 в 16:28

Другие вопросы по тегам:

Похожие вопросы: