程序

程序

就在昨天,我从 Ubuntu 18.04 迁移到了 Ubuntu 20.04。18.04 中有一个名为“电池监视器”的软件,它可以监视您的电池百分比,并在电池百分比达到低水平时通知您。

我尝试在 20.04 中安装它,但似乎它不兼容,或者也许我做错了什么……

有人能帮助我解决这个问题或者帮我找到替代方案吗?

我最重要的需求是当我的电池电量百分比低于某个数值时收到通知。

谢谢

答案1

我有 Ubuntu Budgie 20.04,这对我有用:

cd /etc/UPower
sudo nano UPower.conf

如果您设置UsePercentageForPolicy=true然后根据自己的喜好编辑百分比线,例如:

PercentageLow=50
PercentageCritical=35

如果您更喜欢基于时间的方法,则设置UsePercentageForPolicy为 false 并根据您的喜好设置时间通知选项,例如:

TimeLow=1200
TimeCritical=300

按 ctrl+X 保存 UPower.conf 文件并关闭 nano 编辑器。
重新启动计算机或sudo systemctl restart upower使更改生效。

通过这样做,我能够收到电池电量低和电量不足的通知。弹出通知仅显示约 2 秒钟。它如下所示:在此处输入图片描述

答案2

稍微变化一下Ensei_Tankado 的回答这不会导致多个通知堆积。

相同程序,不同脚本:

#!/bin/bash

export XDG_RUNTIME_DIR=/run/user/$(id -u)

V1="Charging"

V2=$(grep -w "Charging" /sys/class/power_supply/BAT0/status)

V3=$(grep -Eo '[0-9]{1,}' /sys/class/power_supply/BAT0/capacity)

if [ "$V1" = "$V2" ]; then
    rm -f "/tmp/battery-notification-low"
    if [ "$V3" -ge 80 ] && [[ ! -f "/tmp/battery-notification-high" ]]; then
        touch "/tmp/battery-notification-high"
        notify-send -u critical "Battery High" "Remove Charger"
    fi
fi

U1="Discharging"

U2=$(grep -w "Discharging" /sys/class/power_supply/BAT0/status)

if [ "$U1" = "$U2" ]; then
    rm -f "/tmp/battery-notification-high"
    if [ "$V3" -le 40 ] && [[ ! -f "/tmp/battery-notification-low" ]]; then
        touch "/tmp/battery-notification-low"
        notify-send -u critical "Battery Low" "Plug in Charger"
    fi
fi

答案3

经过大量研究,这里有一个运行完美的脚本 - 并且在电池电量高和低时都会发出持续的通知;)

程序

  1. 将脚本(写在下面)存储在某个文件夹中(例如主目录中名为脚本的文件夹)
  2. 打开终端并输入:crontab -e
  3. 添加此行以每 2 分钟自动运行一次脚本:(注意:我保留脚本的名称为电池通知)

*/2 * * * * bash /home/garmadon/scripts/battery-notifications.sh

  1. Ctrl + x进而进入退出并保存 crontab。
  2. 注销并重新登录系统(或重启)即可看到效果。

剧本

#!/bin/bash

export XDG_RUNTIME_DIR=/run/user/$(id -u)

V1="Charging"

V2=$(grep -w "Charging" /sys/class/power_supply/BAT0/status)

V3=$(grep -Eo '[0-9]{1,}' /sys/class/power_supply/BAT0/capacity)

if [ "$V1" = "$V2" ] && [ "$V3" -ge 85 ]; then
    notify-send -u critical "Remove Charger!"
fi

U1="Discharging"

U2=$(grep -w "Discharging" /sys/class/power_supply/BAT0/status)

if [ "$U1" = "$U2" ] && [ "$V3" -le 45 ]; then
    notify-send -u critical "Plug in Charger!"
fi

笔记:

  1. 我在 ubuntu 20.04
  2. 我保留了85%和45%作为通知级别,您可以根据需要进行修改。
  3. 此脚本会持续发出通知,除非您单击它们,否则它们不会消失。如果您不在笔记本电脑旁,这会非常有用,从而防止您错过提醒。

在这里了解有关 cron 的更多信息:

  1. https://www.geeksforgeeks.org/crontab-in-linux-with-examples/
  2. https://crontab.guru

答案4

我想到了这个解决方法:

在 ubuntu 20 中有效

依赖项

sudo apt install gir1.2-appindicator3-0.1 acpi libappindicator3-1
sudo apt install libnotify4 libgirepository1.0-dev libcairo2

python3 -m pip install pycairo 

1.下载源码

cd ~/Downloads/
wget https://github.com/maateen/battery-monitor/archive/master.zip
unzip master.zip
cd battery-monitor-master/

2.Makefile的修改

nano Makefile (3 changes)

# 1. change sh in first line to bash

# 2. change from:
PREFIX ?= /usr
# to:
PREFIX ?= /home/USERNAME/.local

# 3 change python version in two! lines

# from: 
python setup.py clean/install
# to:
python3 setup.py clean/install

3. 以 root 身份安装

sudo su
export PYTHONPATH=/home/USERNAME/.local/lib/python3.8/site-packages/
make install
exit

4. 以非 root 身份运行

nohup battery-monitor &

5. 修复 Notification.py 中上限警告的正常工作

I know it is odd but, I had to fix this:
#                                     ↓↓↓ your python version of install             ↓↓↓ your python version
sudo nano /home/USERNAME/.local/lib/python3.8/site-packages/battery_monitor-0.0.0-py3.8.egg/battery_monitor/Notification.py
# change the old lines with the new ones
         elif state == 'charging':
NEW            if (percentage >= self.upper_threshold_warning and
OLD            if (percentage != self.last_percentage and
                 remaining != "discharging at zero rate - will never fully discharge" and
                 self.last_notification != "upper_threshold_warning"):
                     self.last_percentage = percentage
NEW                  self.last_notification = "upper_threshold_warning"
OLD                  self.last_notification!="upper_threshold_warning"
                     self.show_notification(type="upper_threshold_warning",
                                            battery_percentage=percentage,
                                            remaining_time=remaining)

有关的:https://www.linuxquestions.org/questions/slackware-14/help-to-build-libindicator-libappindicator-for-battery-monitor-4175668385/

相关内容