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
?
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
?
Odpowiedzi:
To pytanie jest naprawdę interesujące, ponieważ stanowi odpowiedź.
dbus-monitor
po 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-monitor
wykonywane 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ć espeak
do odczytania wiadomości. Na przykład,
Zastąpienie powyższego dbus-monitor
polecenia 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-send
lub 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 saynoti
działa.
Możesz także uruchomić za saynoti
każ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ę.
dbus-monitor
, chcę zacząć się uczyć
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 |