电池电量低通知

电池电量低通知

我在联想 z5170 上安装了 Ubuntu 16.04 LTS。我想要一个程序(无论使用什么编程语言),通过哔声通知我电池电量不足。我认为该程序应该处于休眠状态,直到电池电量耗尽(10% 电量),但我所能想到的只是一个 while 循环,它会消耗整个处理器并阻止其他所有程序运行。

1-我应该如何实现这样的程序?

2-有哪些方式可以通知用户特定事件?

答案1

除了建议的重复方法之外,您还可以执行以下操作:

通过以下方式查找您的电池接口路径upower -enumerate

bash-4.3$ upower --enumerate
/org/freedesktop/UPower/devices/line_power_ACAD
/org/freedesktop/UPower/devices/battery_BAT1
/org/freedesktop/UPower/devices/DisplayDevice

然后使用upower --show-info并触发其输出。在我的示例中,情况如下:

bash-4.3$ upower --show-info /org/freedesktop/UPower/devices/DisplayDevice | awk '/percentage/{gsub(/\%/,""); print $2}'
100

您现在要做的就是使用一个简单的脚本来比较该输出值是否小于或等于某个阈值

#!/bin/bash

get_percentage()
{
     # Note, | \ must have only new line after it, no space
     upower --show-info /org/freedesktop/UPower/devices/battery_BAT1 |\
     awk '/percentage/{gsub(/\%/,""); print $2}'
}

main()
{
    while true
    do
        pcent=$(get_percentage)
        [ $pcent -le 10  ] && notify-send "Battery Low" "Please plug in charger"
        sleep 60 # check every minute
    done
}
main

至于通过蜂鸣通知,您可以使用aplay命令和任何音频文件代替notify-send。如果您没有 GUI,您也可以使用wall这样的命令wall <<< "Battery low",它会打印到屏幕上的消息。笔记:由于最近的更新,gnome-terminal此功能在 中不起作用gnome-terminal,但在 TTY 和其他终端仿真器中仍然可以使用

相关内容