Czy istnieje sposób, aby Ubuntu odczytał powiadomienia?

9

Ubuntu ma bardzo fajny system powiadomień. Czy istnieje sposób, aby Ubuntu odczytał powiadomienia, gdy się pojawią?

Czy jest możliwe link do tekstu w powiadomieniach espeak?

Miauczeć
źródło
Ten bugs.launchpad.net/ubuntu/+source/notify-osd/+bug/345357 stany Orca nie zrobił i teraz znowu robi (?)
Rinzwind
1
orca czyta wszystko i jest bardzo denerwujące, czego szukam to sposób na odczytanie tylko powiadomień, dzięki za wsparcie :)
Meow

Odpowiedzi:

17

To pytanie jest naprawdę interesujące, ponieważ stanowi odpowiedź.

dbus-monitorpo wykonaniu czeka na sygnał, a po nadejściu łapie i podaje odpowiednie informacje na jego temat. Podobnie można go wykonać, aby uzyskać informacje o powiadomieniach . Po wykonaniu:

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

Będzie czekał na powiadomienia, a gdy nadejdzie jakieś powiadomienie, poda informacje o powiadomieniach.

Na przykład, gdy dźwięk jest zwiększany / zmniejszany, zmieniany jest dowolny utwór lub jakikolwiek inny, pojawia się komunikat. Ręcznie tworzę powiadomienie na pulpicie za pomocą notify-send polecenia na dowolnym innym terminalu:

notify-send "Hello How are you?"

Wtedy pierwszy terminal, w którym dbus-monitorwykonywane jest polecenie, wyświetli komunikat:

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"

Teraz powyższe dane wyjściowe można łatwo przekazać espeakdo odczytania wiadomości. Na przykład,

Zastąpienie powyższego dbus-monitorpolecenia następującym poleceniem spowoduje odczytanie powiadomienia:

Sprawdź, jak to działa:

  • Wykonaj to polecenie w terminalu i pozostaw je uruchomione:

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

    Wiem, że stało się bardzo długie, ale nie ma innego sposobu, aby uczynić go małym, ponieważ filtrowanie faktycznego powiadomienia spowodowało, że było ono długie.

  • Następnie uruchom powiadomienie na pulpicie w sposób opisany powyżej za pomocą notify-sendlub jakiejkolwiek innej rzeczy. Używam notify-send. Wykonanie następującego polecenia w innym terminalu:

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

    Jak tylko wykonasz polecenie, wypowie ono (przeczyta) powiadomienie.

Chociaż zjadł moje 4-5 godzin, ale cieszę się, że to działa.

Możesz także utworzyć własne poleceniesaynoti i wykonać je za każdym razem, gdy chcesz otrzymać powiadomienie o czytaniu. Wykonując następujące kroki możesz to zrobić:

  • Najpierw zapisz aktualne polecenie w pliku o nazwie saynoti. Możesz użyć dowolnej nazwy pliku, która stanie się rzeczywistą nazwą polecenia.

  • Następnie uczyń plik wykonywalnym i przenieś go lub skopiuj do /bin:

    chmod +x saynoti
    sudo cp saynoti /bin
    
  • Teraz możesz po prostu wykonać nowe polecenie, aby rozpocząć wymawianie powiadomienia :

    saynoti
    
  • Aby zabić uruchomiony proces, możesz wykonać następujące polecenie:

    pkill dbus-monitor
    

    lub po prostu naciśnij Ctrl+ Cna terminalu, na którym saynotidziała.

  • Możesz także uruchomić za saynotikażdym razem, gdy system się uruchamia, czyniąc go aplikacją startową .

Chciałbym podziękować za to pytanie. Z powodu tego pytania nauczyłem się wielu rzeczy. :)

Odpowiedz, jeśli pojawi się jakiś problem lub potrzebujesz dalszej zmiany / modyfikacji. Jestem pewien, że z przyjemnością otrzymasz ostateczną działającą wersję.

Saurav Kumar
źródło
@ Meow: Brzmi dobrze, że jesteś zadowolony z wyniku. W przyszłości, jeśli będziesz potrzebować modyfikacji, po prostu ping mnie tutaj.
Saurav Kumar
@ Meow: sprawdź ostateczną działającą wersję. Rozwiązałem cały problem i działa świetnie. Z przyjemnością otrzymasz tę wersję.
Saurav Kumar
2
koleś, jesteś niesamowity, nie możesz prosić o nic innego; umieściłem go na mojej liście startowej i działa bezbłędnie merci beaucoup
Meow
skąd się dowiedziałeś dbus-monitor, chcę zacząć się uczyć
Edward Torvalds
@edwardtorvalds: Możesz się tego nauczyć z oficjalnej strony o Dbus i Dbus-Monitor. 1. freedesktop.org/wiki/Software/dbus 2. dbus.freedesktop.org/doc/dbus-monitor.1.html
Saurav Kumar
0

Miałem problem z dodatkowymi „w moich adresach e-mail, dlatego dodałem to do powyższej linii kodu, ponieważ espeak nie potrzebuje wcale”, aby odczytać;)

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

=>

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

COOL praca. Zdecydowanie lepiej niż poprawianie powiadomień - wyślij samo lib 4 „Cześć! Jestem Saurav Kumar”.

aktualizacja: nie działa stabilnie. Użyję | tee -a $ plik |

Jimmy
źródło