Làm cách nào để chạy tập lệnh trên tín hiệu dbus?


13

Có thể chạy một tập lệnh trên tín hiệu dbus tùy ý không? Một cái gì đó như Upstart chạy như một người dùng không có đặc quyền và không yêu cầu quyền root để sửa đổi?

Tôi hỏi bởi vì tôi đã viết một kịch bản ngớ ngẩn chờ đợi các sự kiện bluetooth để khởi động trình phát nhạc của mình . Bây giờ tôi muốn làm một cái gì đó tương tự khi máy của tôi kết nối với các mạng cụ thể hoặc các thiết bị khác đính kèm.

EDIT: Câu hỏi ban đầu của tôi không chỉ định điều này, nhưng tôi có nghĩa là "liên kết một số tập lệnh với một trong các sự kiện" - vì vậy tôi có cùng một trình khởi chạy (như Upstart) quản lý một số tập lệnh , mỗi trong số đó quan tâm đến một tín hiệu dbus khác nhau. Tất cả trong không gian người dùng.


Có thể đó không phải là chính xác những gì bạn tìm kiếm, nhưng hiện lên trong tâm trí tôi khi bạn nói về sự khởi đầu. Bạn có thể kích hoạt các tập lệnh với systemd . Tôi không chắc chắn chính xác loại thiết bị nào tạo ra thiết bị bluetooth của bạn, nhưng tôi nghĩ có một đơn vị.
sumid

Câu trả lời:


16

Bạn cần dbus-monitor

Kịch bản sẽ trông giống như

#!/bin/bash

interface=org.gnome.Rhythmbox.Player
member=playingUriChanged

# listen for playingUriChanged DBus events,
# each time we enter the loop, we just got an event
# so handle the event, e.g. by printing the artist and title
# see rhythmbox-client --print-playing-format for more output options

dbus-monitor --profile "interface='$interface',member='$member'" |
while read -r line; do
  printf "Now playing: "
  rhythmbox-client --print-playing
done

Lấy từ stackoverflow .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.