我的笔记本电脑电池很差劲,不充电最多只能使用 5 分钟。有时充电器会在我不知情的情况下掉出来,导致电脑意外关机。
有没有办法在我的充电器掉落时立即收到通知?而不是像 Ubuntu 那样在电池需要充电时收到通知(因为这对我的笔记本电脑不起作用,我已经放弃了这个想法)
答案1
简单线性命令:
[[ $(acpi -b | grep -o "Discharging") ]] && notify-send "Alert" "Battery is not charging.\n Please plug your AC adapter!"
我们man acpi
有:
NAME
acpi - Shows battery status and other ACPI information
SYNOPSIS
acpi [options]
DESCRIPTION
acpi Shows information from the /proc or the /sys filesystem, such as battery status or thermal information.
OPTIONS
-b | --battery
show battery information
如果您运行acpi -b
并且电池处于充电模式,您将得到以下结果:
Battery 0: Charging, 88%, 00:38:17 until charged
如果你的电池没有充电,结果将是这样的:
Battery 0: Discharging, 87%, 03:46:06 remaining
然后我们用这个命令在结果中查找“Discharging”:
acpi -b | grep -o "Discharging"
如果电池未充电,结果将“放电”。
最后,如果我们收到“放电“来自上面的命令:
[[ $(acpi -b | grep -o "Discharging") ]] && notify-send "Alert" "Battery is not charging.\n Please plug your AC adapter!"
注意:[[ Something ]]
始终为真,也[[ ! Something ]]
始终为假。
现在最简单的方法是在后台运行它,在while循环内。然后我将命令放入while循环中,并在X时间间隔内检查电池状态。像这样:
while true
do
# Our command
sleep [number of seconds] # check the status every [number of seconds] seconds
done
如果您想在启动时以及每 5 分钟运行一次脚本,那么构造将是:
- 保存脚本(我将其命名
ChkCharge.sh
为我的主目录) - 添加一行
/etc/rc.local
来调用你的脚本(你的ChkCharge.sh
)+“&”使其退出。喜欢bash /home/USERNAME/ChkCharge.sh &
。
最终脚本
#!/bin/bash
while true
do
[[ $(acpi -b | grep -o "Discharging") ]] && notify-send "Alert" "Battery is not charging.\n Please plug your AC adapter!"
sleep 300 # 300 seconds or 5 minutes
done
完成。重启并见证奇迹 ;)
答案2
这看起来很简单,我不是 Bash 脚本专家,但也许对你有用
# sh script.sh
内容script.sh
:
#! /bin/bash
power=$(cat /sys/class/power_supply/BAT1/status)
while true; do
actual=$(cat /sys/class/power_supply/BAT1/status)
if [ $actual != $power ]; then
power=$actual
notify-send $actual
fi
done
基本上,我正在读取一个文件,sysfs
其中包含有关您的电池的信息,其中还有更多信息可能很有趣。该文件status
包含一个标志,指示您的设备是否确实收费或者放电。希望对你有帮助。