Иногда мое зарядное устройство остается подключенным к ноутбуку даже после завершения зарядки.
Есть ли способ получить всплывающее сообщение / уведомление, когда моя батарея полностью заряжается из-за зарядки, или есть какое-либо программное обеспечение / пакет, который может обеспечить функциональность?
Установите 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 существует ненулевой.
Я написал небольшой скрипт, который будет делать это:
Скрипт: [ 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
в качестве запускаемого приложения:
Вот Crontab, который я использую
Уведомлять, если батарея полная (равно 100%)
*/1 * * * * if [ $ (cat /sys/class/power_supply/BAT0/capacity) -eq 100 ]; затем XDG_RUNTIME_DIR=/run/user/$(id -u) notify-send Hey "Battery Full"; фи
Уведомлять, если уровень заряда батареи низкий (меньше или равен 10%)
*/1 * * * * if [ $(cat /sys/class/power_supply/BAT0/capacity) - ле 10]; затем XDG_RUNTIME_DIR=/run/user/$(id -u) notify-send Hey "Battery Low"; фи
Пример изображения уведомления:
Я был искал то же самое и нашел это расширение, и оно работает, как и ожидалось.