当 Linux Mint 中的电池即将耗尽时,如何才能收到警报?

当 Linux Mint 中的电池即将耗尽时,如何才能收到警报?

这种情况发生在我身上的次数比我愿意承认的要多,但有时我没有注意到电量变低,因为它只显示在我的状态栏中,然后计算机就退出了。我想要一个大警报,在这种情况发生之前向我发出警告。有什么办法让它提醒我吗? 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 +xbash 脚本。

答案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”,然后安装并配置它。

它不是最华丽的,但到目前为止,当我无意中拔掉笔记本电脑的插头时,它已经提醒了我。

相关内容