小智 3
这是多年来我在宏碁、苹果和华硕笔记本电脑上遇到的问题。我想这不仅限于以字母“A”开头的制造商。
问题在于该upower
服务没有足够频繁地轮询电池。如果您曾经尝试将电池状态与多种工具进行比较,您可能会发现报告的剩余电量和/或充电状态存在差异。不幸的是,这不是可以通过快速访问“设置”或“dconf 编辑器”来解决的问题,但您可以使用强制upower
刷新的脚本来解决此问题。
首先,让我们获取您的电池名称。在终端中,运行以下命令:
upower -e
Run Code Online (Sandbox Code Playgroud)
这应该给你这样的东西:
/org/freedesktop/UPower/devices/line_power_AC
/org/freedesktop/UPower/devices/battery_BAT0
/org/freedesktop/UPower/devices/DisplayDevice
Run Code Online (Sandbox Code Playgroud)
由此,我们可以看到我的电池被恰当地命名为battery_BAT0
。我可以使用以下命令手动强制upower
更新其状态信息busctl
:
busctl call --system org.freedesktop.UPower /org/freedesktop/UPower/devices/battery_BAT0 org.freedesktop.UPower.Device Refresh
Run Code Online (Sandbox Code Playgroud)
注意:在终端中运行此命令时没有输出,但如果您最近(断开)连接电源,您的状态图标可能会更新。
要让它定期运行以保持电池图标并在半合理的时间内播放系统通知声音,请将busctl
之前的调用包装到 shell 脚本中:
#!/bin/bash
while sleep 15; do
busctl call --system org.freedesktop.UPower /org/freedesktop/UPower/devices/battery_BAT0 org.freedesktop.UPower.Device Refresh
done
Run Code Online (Sandbox Code Playgroud)
请务必更换battery_BAT0
为您实际的电池名称,并更改15
为您满意的间隔。我已经运行这个程序好几年了,并没有看到该脚本对第四代英特尔酷睿 i5 产生任何性能影响,因此您的 Ryzen 7 也应该没有任何疑虑。
要使其在启动时在后台运行,请打开“启动应用程序”,单击“添加”,然后选择脚本。不过,不要忘记首先使脚本可执行:
chmod +x poke-upower.sh
Run Code Online (Sandbox Code Playgroud)
注意:您可能需要一个更好的文件名。
这更像是一种黑客攻击,而不是一个完整的解决方案,但它确实适用于 Ubuntu Desktop 的许多版本。不过,我尚未找到此问题的根本原因,并且我使用的联想或戴尔设备都没有出现过此行为。
希望这可以帮助
我知道这是一个老问题,但是问题仍然存在,至少部分地......至少如果你将其视为一个问题......
gnome 中的电池图标有一个问题(实际上是一个功能):它显示电池状态,而不是交流适配器状态。电池控制器决定电池是否需要充电。这意味着,如果电池具有足够高的充电水平(通常 >= 95% 左右),它可能会决定保持这种状态,而不是充电到 100%。但是,插入交流适配器时仍然会发出声音。这不是问题,这是设计使然。将电池放电至 90% 左右,然后插入交流电源 - 图标将变为“正在充电”。使用命令行检查也很容易:cat /sys/class/power_supply/AC0/online
在终端中运行 - 它显示0
或1
交流适配器状态;cat /sys/class/power_supply/BAT0/status
查看电池充电状态 - 它显示Charging
或Not charging
。后者是 gnome shell 中图标显示的内容。
另一个问题是轮询电池状态upower
,@user1091774 对此进行了详细描述。我曾经在宏碁和华硕笔记本电脑上遇到过这个问题,但现在没有了。我猜它已经修复了。