如何在電池充滿或低電量時(shí)獲得電池狀態(tài)通知
對(duì)于類 Unix 用戶來(lái)說(shuō),Linux 筆記本是不錯(cuò)的選擇,但它經(jīng)常會(huì)耗盡電池。我試過(guò)很多 Linux 操作系統(tǒng),但沒(méi)有像 Windows 那樣電池壽命長(zhǎng)。
充電時(shí)間長(zhǎng)了會(huì)對(duì)電池造成損害,所以在電池 100% 充滿時(shí)要拔掉電源線。電池充電或放電時(shí)沒(méi)有默認(rèn)的應(yīng)用程序來(lái)通知,需要安裝第三方應(yīng)用來(lái)通知你。
為此,我通常會(huì)安裝 Battery Monitor,但它已經(jīng)被廢棄,所以我創(chuàng)建了一個(gè) shell 腳本來(lái)獲取通知。
筆記本電池充放電狀態(tài)可以通過(guò)以下兩個(gè)命令來(lái)識(shí)別。
使用 acpi
命令。
$ acpi -b
Battery 0: Discharging, 71%, 00:58:39 remaining
使用 upower
命令。
$ upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep -w 'state|percentage' | awk '{print $2}'
discharging
64%
方法 1:當(dāng)電池電量高于 95% 或低于 20% 時(shí),用 Shell 腳本發(fā)送警報(bào)
這個(gè)腳本在啟動(dòng)時(shí)在后臺(tái)運(yùn)行,每分鐘檢查一次電池狀態(tài),然后在電池電量超過(guò) 95% 或放電時(shí)電量低于 20% 時(shí)發(fā)送通知。
警報(bào)會(huì)直到你的電池電量超過(guò) 20% 或低于 95% 時(shí)才會(huì)停止。
$ sudo vi /opt/scripts/battery-status.sh
#!/bin/bash
while true
do
battery_level=`acpi -b | grep -P -o '[0-9]+(?=%)'`
if [ $battery_level -ge 95 ]; then
notify-send "Battery Full" "Level: ${battery_level}%"
paplay /usr/share/sounds/freedesktop/stereo/suspend-error.oga
elif [ $battery_level -le 20 ]; then
notify-send --urgency=CRITICAL "Battery Low" "Level: ${battery_level}%"
paplay /usr/share/sounds/freedesktop/stereo/suspend-error.oga
fi
sleep 60
done
腳本完成后,設(shè)置可執(zhí)行權(quán)限:
$ sudo chmod +x /opt/scripts/battery-status.sh
最后,將該腳本添加到用戶配置文件的底部。對(duì)于全局范圍來(lái)說(shuō),你需要在 /etc/profile
文件中添加該腳本。
$ vi /home/magi/.profile
/opt/scripts/battery-status.sh &
重啟你的 Linux 系統(tǒng)來(lái)檢查這點(diǎn)。
$ sudo reboot
方法 2:當(dāng)電池充電(高于 95%)或放電(低于 20%)時(shí)發(fā)送通知的 Shell 腳本
這個(gè)腳本與上面的腳本類似,但它是由交流適配器負(fù)責(zé)。
如果你插上了交流適配器,而且電池的電量超過(guò) 95%,它就會(huì)發(fā)出一個(gè)帶有聲音的通知,但是這個(gè)通知不會(huì)停止,直到你拔掉交流適配器。
如果你拔掉交流適配器,你將永遠(yuǎn)不會(huì)再看到通知,直到你的電池電量下降到 20%。
$ sudo vi /opt/scripts/battery-status-1.sh
#!/bin/bash
while true
do
export DISPLAY=:0.0
battery_level=`acpi -b | grep -P -o '[0-9]+(?=%)'`
if on_ac_power; then
if [ $battery_level -ge 95 ]; then
notify-send "Battery Full" "Level: ${battery_level}% "
paplay /usr/share/sounds/freedesktop/stereo/suspend-error.oga
fi
else
if [ $battery_level -le 20 ]; then
notify-send --urgency=CRITICAL "Battery Low" "Level: ${battery_level}%"
paplay /usr/share/sounds/freedesktop/stereo/suspend-error.oga
fi
fi
sleep 60
done
腳本完成后,設(shè)置執(zhí)行權(quán)限:
$ sudo chmod +x /opt/scripts/battery-status-1.sh
最后將腳本添加到用戶配置文件的底部。對(duì)于全局范圍來(lái)說(shuō),你需要在 /etc/profile
文件中添加該腳本。
$ vi /home/magi/.profile
/opt/scripts/battery-status-1.sh &
重啟系統(tǒng)來(lái)檢查:
$ sudo reboot
參考: stackexchange