当我的笔记本电脑电池充满电时,我如何收到通知?

Ank*_*kit 16 battery software-recommendation

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

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

hg8*_*hg8 9

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

截屏


脚本:

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

安装:

跑:

sudo apt-get install acpi
git clone https://github.com/hg8/battery-full-notification.git
cd battery-full-notification/
chmod +x batteryfull.sh
Run Code Online (Sandbox Code Playgroud)

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

cp batteryfull.* ~/bin
Run Code Online (Sandbox Code Playgroud)

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

cp batteryfull.* /usr/local/bin
Run Code Online (Sandbox Code Playgroud)

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

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

    启动应用程序充满电


Jan*_*sen 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
Run Code Online (Sandbox Code Playgroud)

如果echo -e "\a"有声音,当您想查看电池状态时启动:

watch --beep return0whencharging.sh
Run Code Online (Sandbox Code Playgroud)

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

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

说明

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