Có cách nào để làm cho Ubuntu đọc thông báo không?


9

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?


Đây bugs.launchpad.net/ubuntu/+source/notify-osd/+bug/345357 bang orca không và bây giờ không nữa (?)
Rinzwind

1
Orca đọc tất cả mọi thứ và rất khó chịu những gì đang tìm kiếm là cách chỉ đọc các thông báo dù sao cũng cảm ơn vì đã hỗ trợ :)
Meow

Câu trả lời:


17

Câu hỏi này thực sự thú vị để trả lời.

dbus-monitorkhi đượ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-monitorthự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-monitorlệ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-sendhoặ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 saynotimỗ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.


@Meow: Âm thanh tốt mà bạn hài lòng với kết quả. Trong tương lai nếu bạn cần bất kỳ sửa đổi, chỉ cần ping tôi ở đây.
Saurav Kumar

@Meow: Kiểm tra phiên bản làm việc cuối cùng. Tôi đã giải quyết tất cả các vấn đề và nó đang hoạt động rất tốt. Bạn sẽ rất vui khi có được phiên bản này.
Saurav Kumar

2
anh bạn tuyệt vời không thể hỏi bất cứ điều gì khác; tôi đã đặt nó trong danh sách khởi động của mình và nó hoạt động hoàn hảo merci beaucoup
Meow

bạn đã học về từ đâu dbus-monitor, tôi muốn bắt đầu học
Edward Torvalds

@edwardtorvalds: Bạn có thể tìm hiểu nó từ trang web chính thức của nó về Dbus và Dbus-Monitor. 1. freedesktop.org/wiki/Software/dbus 2. dbus.freedesktop.org/doc/dbus-monitor.1.html
Saurav Kumar

0

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 |

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.