Keyvan Asked: 2010-11-25 13:02:25 +0800 CST2010-11-25 13:02:25 +0800 CST 2010-11-25 13:02:25 +0800 CST 如何在插入 USB 设备时显示通知? 772 很高兴知道当您连接网络摄像头之类的 USB 设备时,它会通知我它是否有效。 notification hardware usb devices 4 个回答 Voted Dmitry Frank 2014-02-27T01:06:36+08:002014-02-27T01:06:36+08:00 令我惊讶的是,在 2014 年,我们仍然没有默认使用此功能。似乎很少有人需要这个功能,但我真的很需要它。 首先,我找到了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 我还没有找到任何解决方案,所以我不得不删除它。(也提交了错误报告) 到目前为止,我还没有找到类似的实用程序。所以我必须实现自己的解决方案,它可能并不出色,但它对我有用:它通过声音和视觉通知通知我插入/拔出的任何设备。设备的标题是通过 接收的lsusb,所以如果我插入一些未知设备,至少我会看到它的vendor_id:product_id. 我喜欢。 它看起来像这样: 安装细节。 在 Ubuntu 12.04、Xubuntu 12.04、Xubuntu 13.04、Linux Mint 13 上测试。我相信它应该可以在其他 Ubuntu 衍生产品上运行,我希望它可以在任何带有udev. 转到项目页面,从那里获取资源并将它们放在某个地方。其中只有一个主要脚本:my-udev-notify.sh,但存档还包含插入/拔出通知的声音,以及更多信息,请参阅readme.txt详细信息。 创建/etc/udev/rules.d/my-udev-notify.rules包含以下内容的文件:(不要忘记将路径修改为您解压缩的真实路径my-udev-notify.sh!) ACTION=="add", RUN+="/bin/bash /path/to/my-udev-notify.sh -a add -p '%p' -b '$attr{busnum}' -d '$attr{devnum}'" ACTION=="remove", RUN+="/bin/bash /path/to/my-udev-notify.sh -a remove -p '%p' -b '$attr{busnum}' -d '$attr{devnum}'" 在此之后,它应该适用于新连接的设备。也就是说,如果您拔下某些设备,您将不会收到通知。但是当你把它插回去时,你会的。(是的,对我来说,它可以在没有任何 udev 重新启动的情况下工作。如果它不适合你,请尝试重新启动) 要使其适用于所有设备,只需重新启动系统即可。请注意,在首次启动期间可能会有很多通知(请参阅 中的已知问题readme.txt)。在第二次启动时,不会有任何通知(除非您在系统关闭时插入新设备) 您可以自定义它(打开/关闭视觉和声音通知,或更改声音),查看存档中的 readme.txt 了解详细信息。 MagicFab 2010-11-26T07:23:19+08:002010-11-26T07:23:19+08:00 libnotify-bin包包含一个显示通知的二进制文件notify -send。下面是一个调用它的例子: notify-send "新 USB 设备已连接" "新设备已连接:等等等等" 我相信您可以为“添加”和“删除”操作制定一个 udev 规则,以触发一个调用通知的小脚本。我没有对此进行研究,但我看到了类似的脚本为存储设备调用加密/安装命令。 Guadalinex 项目也有这种类型的功能[1],他们于 2005 年在 UDS Seville 进行了演示(!),如果他们向上游提交了他们的工作,或者如果它在某个地方作为单独的包提供,也许会更容易追踪。不要安装我引用的 Debian 错误中提到的软件包,如果有人决定研究它,这仅供参考。 [1] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=458405 tinhed 2010-11-25T20:47:45+08:002010-11-25T20:47:45+08:00 gnome-panel 有一些小程序,可以让你看到插入的设备并让你弹出它们。例如,弹出器是一个小程序,可让您查看已安装的可移动设备并弹出它们。KDE 有一个超酷的通知系统,可以让您查看最近插入了哪些设备。您可以尝试使用lsusb命令检查您的设备是否已被检测到。如果您是喜欢冒险的类型,您可以编写自己的 udev 规则。 Stenen 2010-11-25T13:16:12+08:002010-11-25T13:16:12+08:00 我不相信有这样的通知,(现在我什至不记得在哪里设置通知)我相信让计算机断定网络摄像头是否正常工作可能非常困难。 当您插入 USB 设备时,它通常会出现在您的桌面上,我相信您必须使用您计划与网络摄像头一起使用的程序来确定网络摄像头是否真的有效。 让我们说Skype,例如,您可以进行测试以查看它是否有效,而无需致电任何人(选项-视频设备-(然后很明显(如果我没记错的话))) 我希望这回答了你的问题 :-)
令我惊讶的是,在 2014 年,我们仍然没有默认使用此功能。似乎很少有人需要这个功能,但我真的很需要它。
首先,我找到了udev-notify包,但不幸的是它对我几乎不起作用:它只工作了很短的时间(1-2 分钟),然后,如果我连接/断开任何设备,它就会崩溃:
我还没有找到任何解决方案,所以我不得不删除它。(也提交了错误报告)
到目前为止,我还没有找到类似的实用程序。所以我必须实现自己的解决方案,它可能并不出色,但它对我有用:它通过声音和视觉通知通知我插入/拔出的任何设备。设备的标题是通过 接收的
lsusb
,所以如果我插入一些未知设备,至少我会看到它的vendor_id:product_id
. 我喜欢。它看起来像这样:
安装细节。
在 Ubuntu 12.04、Xubuntu 12.04、Xubuntu 13.04、Linux Mint 13 上测试。我相信它应该可以在其他 Ubuntu 衍生产品上运行,我希望它可以在任何带有
udev
.my-udev-notify.sh
,但存档还包含插入/拔出通知的声音,以及更多信息,请参阅readme.txt
详细信息。/etc/udev/rules.d/my-udev-notify.rules
包含以下内容的文件:(不要忘记将路径修改为您解压缩的真实路径my-udev-notify.sh
!)在此之后,它应该适用于新连接的设备。也就是说,如果您拔下某些设备,您将不会收到通知。但是当你把它插回去时,你会的。(是的,对我来说,它可以在没有任何 udev 重新启动的情况下工作。如果它不适合你,请尝试重新启动)
要使其适用于所有设备,只需重新启动系统即可。请注意,在首次启动期间可能会有很多通知(请参阅 中的已知问题
readme.txt
)。在第二次启动时,不会有任何通知(除非您在系统关闭时插入新设备)您可以自定义它(打开/关闭视觉和声音通知,或更改声音),查看存档中的 readme.txt 了解详细信息。
libnotify-bin包包含一个显示通知的二进制文件notify -send。下面是一个调用它的例子:
notify-send "新 USB 设备已连接" "新设备已连接:等等等等"
我相信您可以为“添加”和“删除”操作制定一个 udev 规则,以触发一个调用通知的小脚本。我没有对此进行研究,但我看到了类似的脚本为存储设备调用加密/安装命令。
Guadalinex 项目也有这种类型的功能[1],他们于 2005 年在 UDS Seville 进行了演示(!),如果他们向上游提交了他们的工作,或者如果它在某个地方作为单独的包提供,也许会更容易追踪。不要安装我引用的 Debian 错误中提到的软件包,如果有人决定研究它,这仅供参考。
[1] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=458405
gnome-panel 有一些小程序,可以让你看到插入的设备并让你弹出它们。例如,弹出器是一个小程序,可让您查看已安装的可移动设备并弹出它们。KDE 有一个超酷的通知系统,可以让您查看最近插入了哪些设备。您可以尝试使用lsusb命令检查您的设备是否已被检测到。如果您是喜欢冒险的类型,您可以编写自己的 udev 规则。
我不相信有这样的通知,(现在我什至不记得在哪里设置通知)我相信让计算机断定网络摄像头是否正常工作可能非常困难。
当您插入 USB 设备时,它通常会出现在您的桌面上,我相信您必须使用您计划与网络摄像头一起使用的程序来确定网络摄像头是否真的有效。
让我们说Skype,例如,您可以进行测试以查看它是否有效,而无需致电任何人(选项-视频设备-(然后很明显(如果我没记错的话)))
我希望这回答了你的问题 :-)