udev 规则运行的脚本未显示通知

udev 规则运行的脚本未显示通知

我编写了一个脚本,每当我拔掉充电器时都会显示通知。我通过在 rules.d 中制定规则使脚本由 udev 运行。问题是脚本运行正常,但通知没有显示。到目前为止,我知道脚本需要显示服务器的地址,这是我的规则和脚本的样子。

export DISPLAY=:0
export XAUTHORITY=/home/user/.Xauthority
/usr/bin/notify-send --urgency=critical -i face-cool "Charger removed"
zenity --info --text 'Happy New Year'

这是我创建的规则

SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_STATUS}=="Discharging", RUN+="/home/user/alertchargerremoved.sh"

有没有其他方法可以在充电器被移除时通知自己,比如不需要 X 服务器的通知?你还有其他想法吗?如何实现这个功能?

答案1

我以前曾这样做过:

ACTION=="remove", KERNEL=="sd?", ENV{ID_PART_TABLE_TYPE}!="", RUN+="/usr/bin/sudo -u username DISPLAY=:0 notify-send 'Unsafe Remove' '<b><i>Your long message</b></i>' -i /usr/share/icons/gnome/48x48/emotes/face-worried.png -t 10000"

从:当用户不安全地拔下 USB 拇指驱动器时发出警报

因此以同一用户身份sudo运行notify-send(而不是root

/usr/bin/sudo -u username notify-send ...

相关内容