Установите 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,grep
exit 1
когда grep выходит из 0 и exit 0
когда grep существует ненулевой.