Ubuntu hat ein sehr cooles Benachrichtigungssystem. Gibt es eine Möglichkeit, Ubuntu dazu zu bringen, Benachrichtigungen vorzulesen, wenn sie angezeigt werden?
Oder ist es möglich, den Text in Benachrichtigungen mit zu verknüpfen espeak
?
Ubuntu hat ein sehr cooles Benachrichtigungssystem. Gibt es eine Möglichkeit, Ubuntu dazu zu bringen, Benachrichtigungen vorzulesen, wenn sie angezeigt werden?
Oder ist es möglich, den Text in Benachrichtigungen mit zu verknüpfen espeak
?
Antworten:
Diese Frage ist wirklich interessant, so wie die Antwort.
dbus-monitor
Wenn es ausgeführt wird, wartet es auf das Signal und wenn es eintrifft, fängt es die entsprechenden Informationen ab und gibt sie aus. Ebenso kann es ausgeführt werden, um Informationen zu Benachrichtigungen abzurufen . Bei Ausführung:
dbus-monitor "interface='org.freedesktop.Notifications'" | grep --line-buffered "member=Notify\|string"
Es wartet auf die Benachrichtigungen und gibt bei Eingang einer Benachrichtigung die Informationen zu den Benachrichtigungen aus.
Zum Beispiel, wenn der Ton erhöht / verringert oder eine Songspur geändert wird oder eine andere, gibt sie die Nachricht. Ich erstelle manuell eine Desktop-Benachrichtigung mit dem notify-send
Befehl auf einem anderen Terminal:
notify-send "Hello How are you?"
Dann gibt das erste Terminal, in dem der dbus-monitor
Befehl ausgeführt wird, eine Nachricht wie folgt aus:
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"
Jetzt kann die obige Ausgabe leicht an espeak
die gelesene Nachricht übergeben werden. Zum Beispiel,
Wenn Sie den obigen dbus-monitor
Befehl durch den folgenden ersetzen, wird die Benachrichtigungsmeldung gelesen:
Überprüfen Sie, wie es funktioniert:
Führen Sie diesen Befehl in einem Terminal aus und lassen Sie ihn laufen:
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 {}
Ich weiß, dass es sehr lang geworden ist, aber es gibt keine andere Möglichkeit, es klein zu machen, weil das Filtern der tatsächlichen Benachrichtigung es langwierig gemacht hat.
Führen Sie dann eine Desktop-Benachrichtigung aus, entweder wie oben beschrieben notify-send
oder mit einer anderen Funktion. Ich benutze notify-send
. Führen Sie also den folgenden Befehl in einem anderen Terminal aus:
notify-send "Hello! I am Saurav Kumar."
Sobald Sie den Befehl ausführen, wird die Benachrichtigung gesprochen (gelesen).
Es hat zwar meine 4-5 Stunden aufgefressen, aber ich bin jetzt froh, dass es funktioniert.
Sie können auch Ihren eigenen Befehl erstellensaynoti
und ihn jedes Mal ausführen, wenn Sie eine Lesemeldung wünschen. Mit den folgenden Schritten können Sie Folgendes tun:
Speichern Sie zuerst den eigentlichen Befehl in einer aufgerufenen Datei saynoti
. Sie können einen beliebigen Dateinamen verwenden, der zu Ihrem eigentlichen Befehlsnamen wird.
Machen Sie die Datei dann ausführbar und verschieben oder kopieren Sie sie in /bin
:
chmod +x saynoti
sudo cp saynoti /bin
Jetzt können Sie einfach Ihren neuen Befehl ausführen, um die Sprachbenachrichtigung zu starten :
saynoti
Um den laufenden Prozess abzubrechen, können Sie diesen Befehl ausführen:
pkill dbus-monitor
oder drücken Sie einfach Ctrl+ Cauf dem Terminal, auf dem saynoti
gerade läuft.
Sie können es auch saynoti
jedes Mal ausführen, wenn Ihr System gestartet wird, indem Sie es zu einer Startanwendung machen .
Ich möchte mich für diese Frage bedanken. Aufgrund dieser Frage habe ich viele Dinge gelernt. :) :)
Antworten Sie, wenn Sie ein Problem haben oder weitere Änderungen / Modifikationen benötigen. Ich bin sicher, Sie werden sich über die endgültige Arbeitsversion freuen.
dbus-monitor
Ich möchte anfangen zu lernen
Ich hatte Probleme mit extra "in meinen E-Mail-Adressen, daher habe ich dies der obigen Codezeile hinzugefügt, da espeak kein" benötigt, um es vorzulesen;)
| sed 's / "// g" |
=>
| grep --line-buffered -v '^ \ s * $' | sed 's / \ "// g' | xargs -I '{}' espeak {}
COOL Arbeit. Bei weitem besser als notify-send lib selbst zu optimieren. 4 "Hallo! Ich bin Saurav Kumar."
Update: funktioniert nicht stabil. Ich werde | verwenden tee -a $ file |