从 udev 执行的通知发送不工作(在脚本中)

notify-send not working (in script) executed from udev

我想要在桌面上通知特定 USB 设备是 inserted.Hence 以下是 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 执行,则脚本中的通知发送不起作用。

问题:

如何使 udev 的通知发送工作?要么 有没有其他方法可以实现通知?
是否可以从 udev 调用任何 GUI?

谢谢。

主要问题是,默认情况下,udev-rule 不会 运行 在任何与 xorg 相关的环境中,因此不知道要使用哪个 DISPLAY。因此,如果您想将某些内容回显到像 gnome-terminal 这样的终端中,它总是会失败。应在 udev-rule-match 上执行的脚本必须在任何 ui 相关执行之前首先导出 DISPLAY。 这是通过

完成的
export DISPLAY=:0

我想,这也是问题所在,notify-send 只会 运行 靠墙。

我实际上也在玩 udev-rules,虽然我以 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。对小通知很有帮助