在 Linux Mint 中,当我的电池即将耗尽时,如何获得警报?

Tra*_*der 40 power-management notifications linux-mint battery

这种情况发生在我身上比我想承认的要多,但有时我没有注意到电源变低,因为它只显示在我的状态栏中,然后计算机就退出了。我想要一个大警报,在这种情况发生之前警告我。有什么办法让它提醒我吗?Ubuntu 有一个很好的弹出窗口,告诉你它越来越低。

小智 37

写个脚本!

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
Run Code Online (Sandbox Code Playgroud)

然后 cron 它每隔几分钟运行一次。但是,是的,如果您可以通过 GUI 来完成,那可能是一种更好的方法。


小智 8

回复: hdgarrood 的回答,设置cron运行notify-send实际上是非常挑剔的。(crontab -e幸运的是,我认为默认情况下在重新启动后仍然存在)。我遵循了几个指南,我不确定最后到底是什么修复了它,但这是我每 5 分钟运行一次检查器的完整设置:

$ crontab -e

*/5 * * * * sh /home/nrw/.notify-send_setup
*/5 * * * * sh /home/nrw/.battnotif
Run Code Online (Sandbox Code Playgroud)

$ cat .notify-send_setup

*/5 * * * * sh /home/nrw/.notify-send_setup
*/5 * * * * sh /home/nrw/.battnotif
Run Code Online (Sandbox Code Playgroud)

$ cat .battnotif

#!/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
Run Code Online (Sandbox Code Playgroud)

确保chmod +x使用 bash 脚本。


git*_*rik 8

借助此处所有答案中的所有信息,我创建了一个脚本并将其放入 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
Run Code Online (Sandbox Code Playgroud)


Hig*_*aru 6

我现在运行以下命令:

$ crontab -e
*/5 * * * * /home/<my username>/bin/checkLowBattery
Run Code Online (Sandbox Code Playgroud)
$ crontab -e
*/5 * * * * /home/<my username>/bin/checkLowBattery
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,这只是一些改变的 orangenarwhals 代码:

  • 没有 dbus 诡计,不知何故我不需要它
  • 在代码的开头将一些“常量”放入变量中
  • 仅在电池未充电时才实施警告(查看man test,它解释了如何执行 AND 等操作。)
  • 添加图标(在系统上找到一些考生喜欢的东西:$ find /usr/share/icons/ -iname "*batt*low*"
  • 以毫秒为单位的到期时间

不要忘记chmod +x你的脚本,然后你可以直接从 cron(tab) 运行它们,不需要sh.

(这适用于使用 Xmonad 的 Ubuntu。)


Mic*_*per 5

由于您显然在运行 Cinnamon,因此只需安装Battery Applet with Monitoring and Shutdown (BAMS)

右键单击面板 ? + 向面板添加小程序可用小程序(在线),在搜索小部件中键入“BAMS”,然后安装和配置它。

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