Как показать уведомление при вставке USB-устройства?
Было бы хорошо знать, что при подключении USB-устройства, например веб-камеры, оно уведомляет меня о том, работает оно или нет.
4 ответа
Для меня действительно удивительно, что в 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, и я надеюсь, что оно будет работать на любой системе *nix с 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 в архиве для деталей.
Пакет libnotify-bin содержит двоичный файл notify- send, который отображает уведомление. Вот пример его вызова:
notify-send "Новое устройство USB подключено" "Подключено новое устройство: бла-бла-бла"
Я полагаю, что вы могли бы создать правило udev для "добавления" и "удаления" для запуска небольшого сценария, который вызывал бы уведомление. Я не рассматривал это, но я видел похожие сценарии, вызывающие команды шифрования / монтирования для устройств хранения.
Проект Guadalinex также имел такой тип функциональности [1], который они продемонстрировали в UDS Seville в 2005 году (!), Возможно, было бы легче отследить, отправили ли они свою работу в апстрим или где-то в виде отдельного пакета. НЕ устанавливайте пакеты, упомянутые в сообщаемой мной ошибке Debian, это только для справочных целей, если кто-то решит исследовать ее.
Существуют апплеты для панели gnome, которые позволят вам видеть подключенные устройства и позволят вам их извлечь. Например, есть ejecter, который представляет собой апплет, который позволяет вам видеть подключенные съемные устройства и позволяет их извлекать. В KDE есть очень крутая система уведомлений, позволяющая увидеть, какие устройства были недавно подключены. Вы можете попробовать использовать команду lsusb, чтобы проверить, было ли ваше устройство обнаружено или нет. И если вы любитель приключений, вы можете написать свои собственные правила udev.
Я не верю, что такого уведомления еще нет (и сейчас я даже не могу вспомнить, где настроить уведомления), я полагаю, что может быть очень трудно заставить компьютер делать вывод, работает ли веб-камера правильно или нет.
Когда вы вставляете USB-устройство, оно обычно появляется на вашем рабочем столе, я думаю, вам придется использовать программу, которую вы планируете использовать с веб-камерой, чтобы выяснить, действительно ли веб-камера работает.
скажем, скайп, например, вы можете сделать тест, чтобы увидеть, работает ли он, не вызывая никого (опции - видеоустройства - (тогда довольно очевидно (это если я правильно помню)))
Надеюсь, это ответит на ваш вопрос:-)