我使用Linux Mint 13 MATE,并且尝试在插入/拔出设备时设置通知。
首先,我找到了udev-notify软件包,但不幸的是,它几乎对我不起作用:它只用了很少的时间(1-2分钟),然后,如果我连接/断开任何设备,它就会崩溃:
Traceback (most recent call last):
File "./udev-notify.py", line 319, in <module>
notification.show()
glib.GError: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name :1.1061 was not provided by any .service files
我没有找到任何解决方案,因此我不得不将其删除。(日提交错误报告也)
令人惊讶的是,到目前为止我还没有找到类似的实用程序。然后,我尝试编写应与所有设备匹配的udev规则。我添加了新文件/etc/udev/rules.d/notify.rules
:
ACTION=="add", RUN+="/bin/bash /home/dimon/tmp/device_plug.sh"
ACTION=="remove", RUN+="/bin/bash /home/dimon/tmp/device_unplug.sh"
还有两个脚本:
device_plug.sh:
#!/bin/bash
export DISPLAY=":0"
notify-send "device plugged"
/usr/bin/play -q /path/to/plug_sound.wav &
device_unplug.sh:
#!/bin/bash
export DISPLAY=":0"
notify-send "device unplugged"
/usr/bin/play -q /path/to/unplug_sound.wav &
它可以工作,但是却非常愚蠢。我的问题是:
- 如何获得所连接设备的实际标题,就像我在
lsusb
输出中看到的一样?目前,我只是收到诸如“ plugged”和“ unpugged”之类的通知,而我找不到在udev规则中如何检索设备名称的信息(如果可以的话,我会将其作为参数) - 当前,激活了太多通知。说,当我连接USB记忆棒时,我收到了大约15条通知!但是,如果我运行
lsusb
,则连接的USB记忆棒仅显示为单个设备。因此,似乎我应该在规则过滤器中添加更多参数,但是我找不到它。 - 可能有一些更好的设备插入/拔出通知解决方案?请提出您是否知道的建议。
pyudev
获取通知,并且不需要中的额外脚本/etc/udev
。