这种情况发生在我身上的次数比我愿意承认的要多,但有时我没有注意到电量变低,因为它只显示在我的状态栏中,然后计算机就退出了。我想要一个大警报,在这种情况发生之前向我发出警告。有什么办法让它提醒我吗? Ubuntu 有一个很好的弹出窗口,告诉你它的电量正在变低。
答案1
写一个脚本!
battery_level=`acpi -b | grep -P -o '[0-9]+(?=%)'`
if [ $battery_level -le 10 ]
then
notify-send "Battery low" "Battery level is ${battery_level}%!"
fi
然后让它每隔几分钟左右运行一次。但是,是的,如果您可以通过 GUI 来完成此操作,那可能是更好的方法。
答案2
回复: hdgarrood 的回答,设置cron
运行notify-send
实际上是非常挑剔的。 (幸运的是,我认为crontab -e
默认情况下重新启动后确实会持续存在)。我遵循了几个指南,我不确定最终到底是什么解决了这个问题,但这是我每 5 分钟运行一次检查器的完整设置:
$ crontab -e
*/5 * * * * sh /home/nrw/.notify-send_setup
*/5 * * * * sh /home/nrw/.battnotif
$ cat .notify-send_setup
#!/bin/bash
touch $HOME/.dbus/Xdbus
chmod 600 $HOME/.dbus/Xdbus
env | grep DBUS_SESSION_BUS_ADDRESS > $HOME/.dbus/Xdbus
echo 'export DBUS_SESSION_BUS_ADDRESS' >> $HOME/.dbus/Xdbus
exit 0
$ cat .battnotif
#!/bin/bash
export DISPLAY=:0
XAUTHORITY=/home/nrw/.Xauthority
if [ -r "$HOME/.dbus/Xdbus" ]; then
. "$HOME/.dbus/Xdbus"
fi
battery_level=`acpi -b | grep -P -o '[0-9]+(?=%)'`
# I tried to only notify when not charging, but could not get it to work
# STATUS=$(cat /sys/class/power_supply/ADP1/online)
# if [ $battery_level -le 15 ] && [ $STATUS == "0" ]
if [ $battery_level -le 15 ]
then
/usr/bin/notify-send -u critical "Battery low" "Battery level is ${battery_level}%!"
echo 'batt low' >> /home/nrw/cron.log
fi
echo 'ran batt' >> /home/nrw/cron.log
确保chmod +x
bash 脚本。
答案3
借助此处所有答案中的所有信息,我创建了一个脚本并将其放入 GitLab 上的存储库中。
它将在以下情况下显示通知:
- 您的数据线已拔出且电池电量低于 30%
- 您的电缆已插入并且电池电量超过 80%
https://gitlab.com/gitaarik/battery-health-notifications
非常欢迎您做出贡献,使其适用于更广泛的环境。
撰写本文时的脚本:
#!/bin/bash
# Run this script as a cronjob every 5 minutes or so, to get notifications when
# battery percentage goes below 30% or above 80%.
# Cronjob line example:
# */5 * * * * /bin/bash /path/to/battery_health_notifications.sh
# This line is to make notify-send always work, also when run in a crontab.
# https://askubuntu.com/questions/298608/notify-send-doesnt-work-from-crontab/346580#346580
export $(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep -u $LOGNAME gnome-session)/environ | tr '\0' '\n')
BATTERY_PATH=$(upower -e | grep battery)
LINE_POWER_PATH=$(upower -e | grep line_power)
BATTERY_PERCENTAGE=$(upower -i $BATTERY_PATH | grep 'percentage:' | awk '{ print $2 }' | sed 's/%//')
CABLE_PLUGGED=$(upower -i $LINE_POWER_PATH | grep -A2 'line-power' | grep online | awk '{ print $2 }')
if [[ $CABLE_PLUGGED == 'yes' ]]; then
if [[ $BATTERY_PERCENTAGE -gt 80 ]]; then
notify-send --urgency=critical "Battery optimization" "Battery reached 80%, unplug the power cable to optimize battery life."
fi
else
if [[ $BATTERY_PERCENTAGE -lt 30 ]]; then
notify-send --urgency=critical "Battery optimization" "Battery is below 30%, plug in the power cable to optimize battery life."
fi
fi
答案4
由于您显然正在运行 Cinnamon,因此只需安装具有监控和关闭功能的电池小程序 (BAMS)。
右键单击面板 →+ 添加小程序到面板→可用的小程序(在线),在搜索小部件中输入“BAMS”,然后安装并配置它。
它不是最华丽的,但到目前为止,当我无意中拔掉笔记本电脑的插头时,它已经提醒了我。