Ubuntu có một hệ thống thông báo rất tuyệt vời. Có cách nào để khiến Ubuntu đọc thông báo khi chúng xuất hiện không?
Hoặc có thể liên kết văn bản trong thông báo đến espeak
?
Ubuntu có một hệ thống thông báo rất tuyệt vời. Có cách nào để khiến Ubuntu đọc thông báo khi chúng xuất hiện không?
Hoặc có thể liên kết văn bản trong thông báo đến espeak
?
Câu trả lời:
Câu hỏi này thực sự thú vị để trả lời.
dbus-monitor
khi được thực thi chờ tín hiệu và khi đến nó sẽ bắt và đưa ra thông tin thích hợp về nó. Tương tự như vậy, nó có thể được thực thi để có được thông tin về Thông báo . Khi thực hiện:
dbus-monitor "interface='org.freedesktop.Notifications'" | grep --line-buffered "member=Notify\|string"
Nó sẽ chờ thông báo và khi có bất kỳ thông báo nào đến, nó sẽ cung cấp thông tin của thông báo.
Ví dụ: khi âm thanh được tăng / giảm hoặc bất kỳ bài hát nào bị thay đổi hoặc bất kỳ bài hát nào khác, nó sẽ đưa ra thông điệp. Tôi đang tự tạo một thông báo trên màn hình bằng cách sử dụng notify-send
lệnh trên bất kỳ thiết bị đầu cuối nào khác:
notify-send "Hello How are you?"
Sau đó, thiết bị đầu cuối đầu tiên dbus-monitor
thực hiện lệnh sẽ đưa ra thông báo như sau:
saurav@saurav-P4I45Gx-PE:~$ dbus-monitor "interface='org.freedesktop.Notifications'" | grep --line-buffered "member=Notify\|string"
string ":1.473"
method call sender=:1.474 -> dest=:1.475 serial=7 path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications; member=Notify
string "notify-send"
string ""
string "Hello How Are You?"
string ""
string "urgency"
Bây giờ đầu ra trên có thể dễ dàng chuyển qua espeak
để đọc tin nhắn. Ví dụ,
Thay thế dbus-monitor
lệnh trên bằng cách sau sẽ đọc thông báo thông báo:
Kiểm tra, nó hoạt động như thế nào:
Thực hiện lệnh này trong một thiết bị đầu cuối và để nó chạy:
dbus-monitor "interface='org.freedesktop.Notifications'" | grep --line-buffered "string" | grep --line-buffered -e method -e ":" -e '""' -e urgency -e notify -v | grep --line-buffered '.*(?=string)|(?<=string).*' -oPi | grep --line-buffered -v '^\s*$' | xargs -I '{}' espeak {}
Tôi biết nó đã trở nên rất dài, nhưng không có cách nào khác để làm cho nó nhỏ đi vì việc lọc thông báo thực tế khiến nó trở nên dài dòng.
Sau đó chạy một thông báo trên màn hình theo cách tôi đã mô tả ở trên bằng cách sử dụng notify-send
hoặc bất kỳ thứ gì khác. Tôi đang sử dụng notify-send
. Vì vậy, thực hiện lệnh sau trong thiết bị đầu cuối khác:
notify-send "Hello! I am Saurav Kumar."
Ngay khi bạn thực hiện lệnh, nó sẽ nói (đọc) thông báo.
Mặc dù nó đã ăn 4-5 giờ, nhưng giờ tôi rất vui khi làm cho nó hoạt động.
Bạn cũng có thể thực hiện lệnh của riêng mình như thế nàosaynoti
và thực hiện nó mỗi khi bạn muốn thông báo đọc. Bằng cách làm theo các bước sau, bạn có thể làm như vậy:
Đầu tiên lưu lệnh thực tế vào một tệp gọi là saynoti
. Bạn có thể sử dụng bất kỳ tên tệp nào sẽ trở thành tên lệnh thực tế của bạn.
Sau đó làm cho tập tin thực thi và di chuyển hoặc sao chép nó vào /bin
:
chmod +x saynoti
sudo cp saynoti /bin
Bây giờ bạn có thể thực hiện lệnh mới của mình để bắt đầu Thông báo Nói :
saynoti
Để giết quá trình đang chạy, bạn có thể thực hiện lệnh này:
pkill dbus-monitor
hoặc chỉ cần nhấn Ctrl+ Ctrên thiết bị đầu cuối saynoti
đang chạy.
Bạn cũng có thể chạy saynoti
mỗi khi hệ thống của bạn khởi động bằng cách biến nó thành một ứng dụng khởi động .
Tôi muốn nói cảm ơn bạn cho câu hỏi này. Vì câu hỏi này, tôi đã học được rất nhiều điều. :)
Trả lời nếu bạn gặp bất kỳ vấn đề hoặc cần bất kỳ thay đổi / sửa đổi nào. Tôi chắc chắn bạn sẽ rất vui khi có được phiên bản làm việc cuối cùng.
dbus-monitor
, tôi muốn bắt đầu học
Tôi đã chắc chắn có thêm "trong các địa chỉ email của mình do đó tôi đã thêm mã này vào dòng mã ở trên vì đặc biệt không cần" tất cả để đọc ra;)
| sed 's / \ "// g' |
=>
| grep - line-buffered -v '^ \ s * $' | sed 's / \ "// g' | xargs -I '{}' đặc biệt {}
COOL làm việc. Tốt hơn nhiều so với điều chỉnh thông báo-gửi lib chính nó 4 "Xin chào! Tôi là Saurav Kumar."
cập nhật: không hoạt động ổn định. Tôi sẽ sử dụng | tee -a $ file |