Tôi sử dụng Linux Mint 13 MATE và tôi đang cố gắng thiết lập thông báo khi tôi cắm / rút phích cắm thiết bị.
Trước hết, tôi tìm thấy gói thông báo udev , nhưng thật không may, nó gần như không hoạt động với tôi: nó hoạt động trong thời gian rất ngắn (1-2 phút), và sau đó, nếu tôi kết nối / ngắt kết nối bất kỳ thiết bị nào, nó sẽ gặp sự cố:
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
Tôi không tìm thấy bất kỳ giải pháp nào, vì vậy tôi phải loại bỏ nó. (cũng đã nộp bugreport )
Đáng ngạc nhiên, cho đến nay không có tiện ích tương tự tôi tìm thấy. Sau đó, tôi đã cố gắng viết các quy tắc udev phải phù hợp với tất cả các thiết bị. Tôi đã thêm tệp mới /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"
Và hai kịch bản:
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 &
Nó hoạt động, nhưng nó hoạt động rất ngu ngốc. Câu hỏi của tôi là:
- Làm cách nào để có được tiêu đề thực tế của thiết bị được đính kèm, giống như tôi có thể thấy ở
lsusb
đầu ra? Hiện tại, tôi vừa nhận được thông báo như "đã cắm" và "chưa được cắm" và tôi không thể tìm thấy làm cách nào tôi có thể truy xuất tên của thiết bị theo quy tắc udev của mình (Nếu tôi có thể, thì tôi sẽ chuyển nó vào tập lệnh của mình dưới dạng tham số) - Hiện tại, quá nhiều thông báo được kích hoạt. Giả sử, khi tôi gắn USB, tôi nhận được khoảng 15 thông báo! Nhưng, nếu tôi chạy
lsusb
, thanh USB đính kèm được hiển thị dưới dạng một thiết bị duy nhất. Vì vậy, có vẻ như tôi nên thêm một số đối số vào bộ lọc quy tắc, nhưng tôi không thể tìm ra nó. - Có lẽ có một số giải pháp tốt hơn cho các thông báo cắm / rút thiết bị? Xin đề nghị nếu bạn biết một cái gì đó.
pyudev
để nhận thông báo và không yêu cầu thêm tập lệnh/etc/udev
.