我需要启用电源(AC)故障(离线)和电源开启(在线)通知,例如此通知:
我搜索并尝试这样做,但没有找到任何成功的文章。我使用以下命令来监控我的交流适配器:
acpi- a
echo ac_adapter=$(acpi -a | cut -d' ' -f3 | cut -d- -f1)
但我不知道如何在代码上写通知。
我可以编写如下的 shell 脚本吗?
#!/bin/bash
power=ac_adapter=$(acpi -a | cut -d' ' -f3 | cut -d- -f1)
s1="$power"
if [ "$s1" = "off-line" ]; then
notify-send --urgency=low "Power Manager" "Power Down" -i battery_low
echo "notification: off" >~/.scripts/notification
else
if [ $s1 = "on-line" ]; then
notify-send --urgency=normal "Power Manager" "Power Up" -i battery_full
fi
fi
答案1
下面的 shell 脚本适用于交流电源更新,如插入和拔出。您应该在启动时运行此代码;它会无限循环运行。
#!/bin/bash
old="$(upower -i /org/freedesktop/UPower/devices/line_power_AC | fgrep online | awk '{print $2}')"
while sleep 1; do
new="$(upower -i /org/freedesktop/UPower/devices/line_power_AC | fgrep online | awk '{print $2}')"
if [ "$new" != "$old" ]; then
if [ "$new" == "yes" ]; then
notify-send --icon=gnome-power-manager "AC power on"
elif [ "$new" == "no" ]; then
notify-send --icon=gnome-power-manager "Battery power on"
fi
fi
old="$new"
done
notify-send
按您的意愿编辑。
答案2
根据 Sudheer 的回答,我编写了另一个 shell 脚本,它在 Ubuntu 14.04 (Trusty Tahr) 上使用notify-send -t
选项运行良好。当我添加--expire-time=TIME
它时它不起作用,但notify-send -t 30
运行正常。为什么?
这是我的脚本:
#!/bin/bash
stat=$(acpi -a | cut -d' ' -f3 | cut -d- -f1)
if [ "$stat" == 'on' ];then
a=yes
elif [ "$stat" == 'off' ];then
a=no
fi
while true; do
stat=$(acpi -a | cut -d' ' -f3 | cut -d- -f1)
if [ "$stat" != "$a" ]; then
if [ "$stat" == "on" ];then
notify-send -t 30 --icon=gpm-ac-adapter "AC power on"
elif [ "$stat" == "off" ];then
notify-send -t 30 --icon=notification-power-disconnected "AC Power Off Battery power on"
fi
fi
a=$stat
sleep 1
done