笔记本电脑电池充满电后,如何获得通知?


12

有时即使充电完成,我的充电器仍会插入笔记本电脑。

当我的电池由于充电而充满时,是否可以获取弹出消息/通知,或者是否有任何软件/软件包可以提供该功能?

Answers:


7

安装acpi软件包。现在将其放入return0whencharging.sh并使其可执行:

#!/bin/sh
acpi -V
if cat /proc/acpi/battery/BAT1/state | grep "charging state" | grep -vE ":[\t ]*charging$"; then
    exit 1
else
    exit 0
fi

如果echo -e "\a"发出声音,则在要查看电池状态时启动此操作:

watch --beep return0whencharging.sh

如果它没有发出任何声音,或者您想要的通知和更好的报警比任何手表可以提供,安装libnotify-binmpv并用这个代替:

while return0whencharging.sh; do sleep 1; done; notify-send "Finished charging" && mpv -loop /usr/share/sounds/freedesktop/stereo/alarm-clock-elapsed.oga

说明

如果查看grep手册页,您会看到这会-v逆转匹配,因此会返回/状态代码。-E表示它是一个正则表达式。的[\t ]在正则表达式(正则表达式)的意思是“选项卡或空间”。以下星号表示“制表符或空格0次或多次”。尾随的“ $”表示它应与行尾匹配。最终grep意味着行的结尾不是以“:”结尾,任意数量的制表符或空格,然后是“ charging”,并且行的结尾应grep以状态代码0退出。这意味着grep只要计算机处于运行状态,它将返回1。充电。在if当状态代码为0将执行它的第一个分支,grepexit 1当grep退出0且exit 0grep存在非零值时。


如果您想解释这些命令,请问我
Janus Troelsen,2012年

我不确定这个grep -vE“:[\ t] * charging $”将做什么。您能否解释这些命令。谢谢
Ankit 2012年

添加了解释
Janus Troelsen

这个return0whencharging.sh文件在哪里?或者,如果我创建了它,是否必须保存一个特定的位置?
Parto 2014年

@AvatarParto:没关系。名称也不重要,只要您在任何地方都进行更改即可
Janus Troelsen

7

我写了一个小脚本来做到这一点:

屏幕截图


脚本:

#!/usr/bin/env bash
while true
do
    export DISPLAY=:0.0
    battery_percent=$(acpi -b | grep -P -o '[0-9]+(?=%)')
    if on_ac_power; then
        if [ "$battery_percent" -gt 95 ]; then
            notify-send -i "$PWD/batteryfull.png" "Battery full." "Level: ${battery_percent}% "
        fi
    fi
    sleep 300 # (5 minutes)
done

安装:

跑:

sudo apt-get install acpi
git clone https://github.com/hg8/battery-full-notification.git
cd battery-full-notification/
chmod +x batteryfull.sh

将脚本复制到~/bin文件夹(为什么使用〜/ bin文件夹?):

cp batteryfull.* ~/bin

/usr/local/bin如果希望计算机上的所有用户都可以使用它,也可以将其复制到:

cp batteryfull.* /usr/local/bin

然后通过以下方式将batteryfull.sh脚本添加为启动应用程序:

  • 打开破折号
  • 搜索启动应用程序
  • 双击图标
  • 单击Add并填写如下:

    启动应用程序Batteryfull


0

这是我使用的Crontab

  1. 通知电池是否已充满(等于100%)

    */1 * * * * if [ $(cat /sys/class/power_supply/BAT0/capacity) -eq 100 ]; then XDG_RUNTIME_DIR=/run/user/$(id -u) notify-send Hey "Battery Full"; fi
    
  2. 通知电池电量是否不足(小于或等于10%)

    */1 * * * * if [ $(cat /sys/class/power_supply/BAT0/capacity) -le 10 ]; then XDG_RUNTIME_DIR=/run/user/$(id -u) notify-send Hey "Battery Low"; fi
    

通知图像示例:

通知图像示例

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.