我有一个 conky 设置,可以显示电池电量。问题是,每当我将笔记本电脑插入充电器或从充电器上拔下时,我都需要运行 conky-startup 脚本才能使其正确显示。我发现这很麻烦(即使我设置了一个启动器,单击后即可运行该脚本),我想知道我需要做什么才能使脚本在我将笔记本电脑插入充电器或从充电器上拔下时运行。
答案1
这是一个非常简单的脚本,可以将其添加为启动应用程序并将持续运行。插入您想要在检测到电源方法变化时运行的命令,如注释中所述。
#!/bin/bash
# Author: Serg Kolo
# Date: June 17,2015
# Description: this script detects changes in
# the powering method, and does something user
# specifies in appropriate field
on_ac_power
PREVIOUS=$(echo $?)
while [ 1 ]; do
# check if we're on ac power or not
on_ac_power
CURRENT=$(echo $?)
# check if previous values are current
# are different. If they are
# raise the flag.
if [ $CURRENT -ne $PREVIOUS ]; then
echo things changed
# Insert commands you wanna run here
# in the space below this comment
echo running custom stuff
# when done: make current value previous
# for future comparison
PREVIOUS=$(echo $CURRENT )
else
# if previous values and current are same
# it means we didn't switch from battery to
# ac or vice versa; do nothing
continue
fi
sleep 1
done
答案2
当您插入/拔出电源线时,/etc/pm/power.d 中的任何脚本都会在您插入时使用“true”参数运行,在您拔出时使用“false”参数运行。
在该文件末尾添加一些脚本应该可以使其运行。
如果您有很多脚本需要运行,您应该尝试添加如下行:
if [ -f /path/to/the/script ]; then
. /path/to/the/script
fi
您可能需要确保 .../power.d/ 目录中的脚本可以通过以下方式执行:
cd /etc/pm/power.d/
chmod +x ./name_of_file
欲了解更多信息请查看这个答案:如何在插入或拔出电源时运行脚本?
答案3
这是一个通用的方法:
#!/bin/bash
status="$(grep -Po '^charging\s+state:\s+\K.*$' /proc/acpi/battery/BAT0/state)"
if [[ $status = 'charging' ]]; then
##Charging, Do something
elif [[ $status = 'discharging' ]]; then
##Discharging, Do something
elif [[ $status = 'charged' ]]; then
##Charged, Do something
else
##Battery not found, Do something
fi
/proc/acpi/battery/BAT0/state
包含电池的状态,BAT0
如果电池名称与您情况不同,请更换charging state:
文件中以 开头的行包含电池的状态,无论是充电、放电还是已充电我们将该行的状态字符串保存在变量中
status
根据 的值
status
,我们可以做我们想做的事情。