Apakah ada cara untuk membuat Ubuntu membacakan notifikasi?

9

Ubuntu memiliki sistem notifikasi yang sangat keren. Apakah ada cara untuk membuat Ubuntu membacakan notifikasi ketika muncul?

Atau mungkinkah menautkan teks dalam notifikasi ke espeak?

meong
sumber
Bugs.launchpad.net/ubuntu/+source/notify-osd/+bug/345357 ini menyatakan orca tidak dan sekarang melakukannya lagi (?)
Rinzwind
1
orca membaca semuanya dan sangat menjengkelkan apa yang saya cari adalah cara untuk membaca notifikasi saja, terima kasih atas dukungannya :)
Meow

Jawaban:

17

Pertanyaan ini sangat menarik jadi jawabannya.

dbus-monitorketika dieksekusi menunggu sinyal dan ketika tiba itu menangkap dan memberikan informasi yang sesuai tentang itu. Demikian pula dapat dieksekusi untuk mendapatkan info tentang Pemberitahuan . Ketika dieksekusi:

dbus-monitor "interface='org.freedesktop.Notifications'" | grep --line-buffered "member=Notify\|string"

Ini akan menunggu notifikasi dan ketika notifikasi datang akan memberikan informasi notifikasi.

Misalnya ketika suara bertambah / berkurang atau trek lagu apa pun diubah atau yang lain itu memberikan pesan. Saya secara manual membuat pemberitahuan desktop menggunakan notify-send perintah pada terminal lain:

notify-send "Hello How are you?"

Kemudian terminal pertama di mana dbus-monitorperintah dieksekusi akan memberikan pesan seperti:

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"

Sekarang output di atas dapat dengan mudah diteruskan espeakke membaca pesan. Sebagai contoh,

Mengganti dbus-monitorperintah di atas dengan yang berikut ini akan membaca pesan pemberitahuan:

Periksa, Bagaimana cara kerjanya:

  • Jalankan perintah ini di terminal dan biarkan berjalan:

    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 {}
    

    Saya tahu ini menjadi sangat panjang, tetapi tidak ada cara lain untuk menjadikannya kecil karena pemfilteran notifikasi aktual membuatnya menjadi panjang.

  • Kemudian jalankan pemberitahuan desktop baik seperti yang saya jelaskan di atas menggunakan notify-sendatau hal lain. Saya menggunakan notify-send. Jadi, jalankan perintah berikut di terminal lain:

    notify-send "Hello! I am Saurav Kumar."
    

    Segera setelah Anda menjalankan perintah itu akan berbicara (baca) pemberitahuan.

Meskipun memakan 4-5 jam saya, tapi saya senang sekarang membuatnya bekerja.

Anda juga dapat membuat perintah sendiri sepertisaynoti dan menjalankannya setiap kali Anda ingin pemberitahuan membaca. Dengan mengikuti langkah-langkah ini Anda dapat melakukannya:

  • Pertama-tama simpan perintah aktual ke file bernama saynoti. Anda dapat menggunakan nama file apa pun yang akan menjadi nama perintah Anda yang sebenarnya.

  • Kemudian buat file tersebut dapat dieksekusi dan pindahkan atau salin ke /bin:

    chmod +x saynoti
    sudo cp saynoti /bin
    
  • Sekarang Anda cukup menjalankan perintah baru Anda untuk memulai Notifikasi Berbicara :

    saynoti
    
  • Untuk mematikan proses yang sedang berjalan, Anda dapat menjalankan perintah ini:

    pkill dbus-monitor
    

    atau cukup tekan Ctrl+ Cpada terminal tempat saynotiberjalan.

  • Anda juga dapat menjalankan saynotisetiap kali sistem Anda mulai dengan menjadikannya aplikasi start-up .

Saya ingin mengucapkan terima kasih atas pertanyaan ini. Karena pertanyaan ini, saya belajar banyak hal. :)

Balas jika Anda mendapatkan masalah atau perlu perubahan / modifikasi lebih lanjut. Saya yakin Anda akan senang mendapatkan versi kerja terakhir.

Saurav Kumar
sumber
@ Meow: Kedengarannya bagus bahwa Anda senang dengan hasilnya. Di masa depan jika Anda memerlukan modifikasi apa pun, cukup ping saya di sini.
Saurav Kumar
@ Meow: Periksa versi kerja terakhir. Saya memecahkan semua masalah dan ini bekerja dengan baik. Anda akan senang mendapatkan versi ini.
Saurav Kumar
2
Bung kamu hebat tidak bisa bertanya apa pun; saya menempatkannya di daftar startup saya dan berfungsi dengan baik merci beaucoup
Meow
dari mana Anda belajar dbus-monitor, saya ingin mulai belajar
Edward Torvalds
@edwardtorvalds: Anda dapat mempelajarinya dari situs resminya tentang Dbus dan Dbus-Monitor. 1. freedesktop.org/wiki/Software/dbus 2. dbus.freedesktop.org/doc/dbus-monitor.1.html
Saurav Kumar
0

Saya mengalami masalah dengan tambahan "di alamat email saya maka saya telah menambahkan ini ke baris kode di atas karena espeak tidak perlu" sama sekali untuk membacanya;)

| sed 's / \ "// g' |

=>

| grep --line-buffered -v '^ \ s * $' | sed 's / \ "// g' | xargs -I '{}' espeak {}

KEREN bekerja. Lebih baik daripada mengubah notifikasi-kirim lib sendiri 4 "Halo! Saya Saurav Kumar."

pembaruan: tidak berfungsi dengan stabil. Saya akan menggunakan | tee -a $ file |

Jimmy
sumber