Установите 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 существует ненулевой.