我不喜欢在我的笔记本电脑上安装额外的程序和实用程序,所以我正在考虑一个没有acpi. 受@pomsky 回复的启发,以下脚本可能是更好的解决方案。
更新:由于@mdebusk和@blaze-fire(krishan singh),它确实检测到电池是否已经充满电
对于侏儒:
#!/bin/bash
while true
do
export DISPLAY=:0.0
battery_level=`cat /sys/class/power_supply/BAT0/capacity`
battery_status=`cat /sys/class/power_supply/BAT0/status`
if [ $battery_status = "Charging" ] && [ $battery_level -ge 85 ];
then
notify-send -u critical "Battery fully charged"
fi
sleep 120
done
Run Code Online (Sandbox Code Playgroud)
对于 KDE:
#!/bin/bash
while true
do
export DISPLAY=:0.0
battery_level=`cat /sys/class/power_supply/BAT0/capacity`
battery_status=`cat /sys/class/power_supply/BAT0/status`
if [ $battery_status = "Charging" ] && [ $battery_level -ge 85 ];
then
kdialog --msgbox "Battery fully charged" 5
fi
sleep 120
done
Run Code Online (Sandbox Code Playgroud)
如您所见,唯一的区别在于 KDE 和 Gnome 的通知系统。我们使用/sys/class/power_supply/BAT0/设施而不是acpi。使脚本可执行:chmod +x SCRIPTNAME.sh,然后将其添加到启动中。
希望这有帮助。
可能不是最好的方法,但您可以执行以下操作。
首先你需要acpi. 通过运行安装它
sudo apt install acpi
Run Code Online (Sandbox Code Playgroud)接下来您需要创建一个 bash 脚本。创建一个空文本文件,battery-full.sh并添加以下行
#!/bin/bash
while true
do
export DISPLAY=:0.0
battery_level=`acpi -b | grep -P -o '[0-9]+(?=%)'`
if on_ac_power; then #check if AC is plugged in
if [ $battery_level -ge 90 ]; then #check if the battery level is over 90%
notify-send -u critical "Please unplug your AC adapter" "Battery level: ${battery_level}% (charged above 90%)" -i battery-full-charged
fi
fi
sleep 300 #wait for 300 seconds before checking again
done
Run Code Online (Sandbox Code Playgroud)notify-send您还可以通过在上面脚本中的命令后添加合适的音频播放命令来获得声音警报。例如,您可以使用包play中的命令sox(有关其他选项,请参阅此)。首先通过运行安装它
sudo apt install sox
Run Code Online (Sandbox Code Playgroud)
然后修改notify-send脚本中的行如下
notify-send -u critical "Please unplug your AC adapter" "Battery level: ${battery_level}% (charged above 90%)" -i battery-full-charged; play /path/to/audio-file
Run Code Online (Sandbox Code Playgroud)
(替换/path/to/audio-file为系统中存在的实际音频文件的有效路径)。
您还可以考虑将该脚本添加到启动应用程序中,以便每次启动笔记本电脑时它都会自动启动。