Краткий и настраиваемый сценарий для отправки уведомлений на рабочий стол GNU/Linux, если уровень батареи вашего ноутбука достигает определенного минимального или максимального порогового уровня.
Используя и протестированы только на Debian, работающий только на GNOME, но должен работать в других дистрибутивных и настольных средах. Сценарий проверит его потребности и сообщит вам, чего не хватает, при выполнении начального ручного запуска (см. Инструкции ниже.)

Чего достигает этот сценарий?
Я бы предпочел сэкономить несколько копеев в год, отключая вещи, которые не нужно подключать! Аналогичным образом, мой производитель ноутбука также предлагает заряду 20/80, чтобы удержать батарею на оптимальных уровнях.
Я экспериментировал с частичной зарядкой по сравнению с полной зарядкой, и 20/80, кажется, дает моему батарее лучший срок службы.
Среда рабочего стола, которую я в настоящее время использую, кажется, не имеет изначально обладает возможностями порогового значения аккумулятора, а в модели ноутбука нет пороговых значений запуска/остановки в SYSFS.
Большинство существующих решений раздуваются функциями, которые мне не нужны (или не имеют возможности для макс/настройки). Я просто хотел напоминание об уведомлении, чтобы подключить или удалить питание, когда заряд батареи находится на моих предпочтительных уровнях без необходимости постоянно смотреть на символические значки в графическом интерфейсе.
Клонировать репо в каталог на вашем ПК, где сценарий может оставаться доступным в пользовательском языке (root/sudo не требуется)
git clone https://github.com/angela-d/battery-max.gitЗатем выполните ручной запуск, чтобы убедиться, что он работает (он проверит, чтобы ваш путь летучей мыши был там, где его ожидают и установлены зависимости - он побудит вас через терминал, если что -то не так).
Просто запустите полный путь к check-battery :
/storage/battery-max/check-battery (Замените /storage/battery-max для локального пути в вашей системе, где будет сохранена check-battery )
Вот и все! Настройка Cron для автоматизации чеков.
Это запустит скрипт, чтобы проверить состояние батареи в предварительно определенном интервале, который вы установили
crontab -e Если вы хотите, чтобы сценарий работал каждую минуту (замените /storage/battery-max/ для локального пути в вашей системе):
* * * * * /storage/battery-max/check-batteryОбратите внимание, что если вы решите запускать это каждую минуту, вы можете рассмотреть вопрос о блокировке Cron из/var/log/syslog, иначе вы увидите такую спам:
28 дек.
Если вы хотите просто направить сообщения Cron в свой собственный журнал и не полностью их удалить (что и сделает мой пример ниже), укажите это в /etc/rsyslog.conf
Чтобы раздавить эту бесполезную регистрацию, вы можете запустить (необязательно) :
pico /etc/rsyslog.confНайдите линию:
* . * ; auth,authpriv.none -/var/log/syslog Приложение cron , как так:
* . * ; cron,auth,authpriv.none -/var/log/syslogПерезапустить Rsyslog:
service rsyslog restart Откройте check-battery , и вы увидите ряд переменных, которые вы можете настроить в соответствии с вашими потребностями:
# modify the following to suit
BAT_PATH=/sys/class/power_supply/BAT0/
AVAIL= $( cat $BAT_PATH " capacity " )
MIN=70
MAX=80
NOTIFY_TITLE= " Battery Level Threshold Met "
NOTIFY_MSG= " Battery level is at "
ICON= " battery "
FREQ=15Объяснение переменных:
/usr/share/icons/[current theme name] или ~/.local/share/icons/[current theme name]Если вы предпочитаете оставлять батарею подключенной к 24/7, этот сценарий бесполезен для вас, и использование пороговых возможностей TLP может быть лучше подходит, если вы находитесь на ноутбуке IBM или ThinkPad.
Кроме того, вы можете изменить /etc/UPower/UPower.conf /upower.conf и отрегулировать значения, которые также отправят системное уведомление ( PercentageLow , является скоростью, в которой отправляется критическое уведомление):
PercentageLow=10
PercentageCritical=3
PercentageAction=2Нет уведомлений?
Добавьте следующее перед Crons, которые взаимодействуют с вашим графическим интерфейсом в crontab -e чтобы установить вашу среду отображения, к которой Cron не имеет доступа к:
DISPLAY= " :0.0 "
XAUTHORITY= " /home/your_username/.Xauthority "
XDG_RUNTIME_DIR= " /run/user/1000 "(Все 3 вышеупомянутые переменные могут/могут не потребоваться для вашего дистрибуции - эта формулировка - это то, что сработало для меня.)
Я не добавил это в сценарий, так как у меня есть другие пользовательские утилиты, которые отправляют уведомления на мой рабочий стол и не считают необходимым добавлять это в нескольких местах.