我想在桌面上通知插入特定的USB设备。以下是udev规则。
KERNEL=="sd*",SUBSYSTEMS=="usb",ACTION=="add",RUN+="/home/username/Desktop/notify_script"
notify_script如下
#!/bin/sh
su username -c 'notify-send "USB Inserted"'
echo USB_inserted >> /home/username/Desktop/test_file
问题:
如果从命令行以root身份执行上述脚本,则上述脚本可以正常工作,但如果从udev执行,则脚本中的notify-send无法正常工作。
问题:
如何从udev进行通知发送工作?要么 我还有其他方式可以获得通知吗? 是否可以从udev调用任何GUI?
谢谢。
答案 0 :(得分:2)
主要问题是,默认情况下udev规则不会在任何xorg相关环境中运行,因此不知道要使用哪个DISPLAY。因此,如果你想将某些内容回传到像gnome-terminal这样的终端中,它总会失败。该脚本应在udev-rule-match上执行,必须在任何与ui相关的执行之前首先导出DISPLAY。 这是通过
完成的export DISPLAY=:0
我认为,这也是问题所在,而notify-send只会碰壁。
我实际上也在玩udev规则,我设法让它工作,虽然我以root身份行事,类似于我的回答,这个已经在这里找到了:
https://unix.stackexchange.com/questions/80882/udev-running-a-shellscript-that-accesses-an-x-display
还在这里
Scripts launched from udev do not have DISPLAY access anymore?
您可能还需要检查zenity。对小型通知非常有用