如何在 ubuntu 18.04 中设置电池满警报音以节省电池磨损?

如何在 ubuntu 18.04 中设置电池满警报音以节省电池磨损?

我的电池已经第三次出现故障。现在我想在电池电量达到 90% 时设置闹钟,这样我就可以断开电池连接。

有人可以帮我进行设置吗?

答案1

我不喜欢在笔记本电脑上安装额外的程序和实用程序,所以我正在考虑一个没有的解决方案acpi。受到@pomsky 的回复的启发,以下脚本可能是一个更好的解决方案。

更新:它确实可以检测电池是否已充满电,感谢@mdebusk 和@blaze-fire(krishan singh)

对于 Gnome:

#!/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

对于 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

如你所见,KDE 和 Gnome 的通知系统之间唯一的区别。我们使用/sys/class/power_supply/BAT0/工具来代替acpi。使脚本可执行:chmod +x SCRIPTNAME.sh,然后将其添加到启动中。

希望这有帮助。

答案2

这可能不是最好的方法,但您可以执行以下操作。

  1. 首先你需要acpi。通过运行安装

    sudo apt install acpi
    
  2. 接下来你需要创建一个 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
    
  3. 使脚本可执行并运行它。如果电池正在充电且电量超过 90%,您将收到持续通知。

您还可以通过在上述脚本中的命令后添加合适的音频播放命令来获取声音警报notify-send。例如,您可以playsox包中使用命令(对于其他选项,看到这个)首先通过运行安装

sudo apt install sox

然后修改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

/path/to/audio-file用系统中实际音频文件的有效路径替换)。

您也可以考虑将脚本添加到启动应用程序中这样它就会在每次启动笔记本电脑时自动启动。

答案3

另一种选择是,如果您不打算在路上使用,则将电池充电限制器设置为 60% 到 80%。但是,至少对于我的笔记本电脑,我只能在 Windows 中更改它,如以下答案所述:

电池电量停留在 70% 左右且无法继续充电的原因可能是启用了“桌面模式”选项。桌面模式有助于禁止电池充电至 100%,从而最大程度延长电池寿命。此选项也可以禁用。要禁用此选项:

  • 右键单击 Windows 通知区域上的电池图标,然后单击 Dell 延长电池寿命选项
  • 出现电池计量器对话框,单击桌面模式选项卡
  • 选择禁用此功能的选项
  • 然后单击“确定”

我同时启动 Ubuntu 和 Windows 10,因此更改电池充电限制器并不是什么大问题。我不知道有什么应用程序可以在 Linux 中执行此操作。不过,对于我首次进入 Linux 内核编码之旅来说,这将是一个很棒的小型 C 程序。

答案4

构建于@RegantosKDE 的答案:

  • 修复小语法错误,例如第 9 行缺少空格以及删除多余的嵌套 if 语句。
  • 现在使用以下命令使脚本可执行sudo chmod +x /path-to-script/
  • 在 kubuntu 的后台服务中添加脚本作为登录脚本,使其在您登录后自动运行

复制脚本时请注意空格,因为它们会影响输出。

笔记:为了播放音频,你必须安装袜子

#!/bin/bash
while true
    do 
        export DISPLAY=:0.0
        battery_level=`cat /sys/class/power_supply/BAT1/capacity`
        battery_status=`cat /sys/class/power_supply/BAT1/status`
        if [ $battery_status = "Charging" ] && [ $battery_level -ge 85 ];
        then
                play /path-to-mp3-file;  // to play alert sound
                kdialog --msgbox "Battery fully charged";
        fi
        sleep 120       // cooldown time
    done

相关内容