Ubuntu a un système de notification très cool. Existe-t-il un moyen de faire en sorte qu'Ubuntu lise les notifications lorsqu'elles apparaissent?
Ou est-il possible de lier le texte des notifications à espeak
?
Ubuntu a un système de notification très cool. Existe-t-il un moyen de faire en sorte qu'Ubuntu lise les notifications lorsqu'elles apparaissent?
Ou est-il possible de lier le texte des notifications à espeak
?
Réponses:
Cette question est vraiment intéressante donc comme réponse.
dbus-monitor
une fois exécuté attend le signal et quand il arrive, il attrape et donne les informations appropriées à son sujet. De même, il peut être exécuté pour obtenir les informations sur les notifications . Une fois exécuté:
dbus-monitor "interface='org.freedesktop.Notifications'" | grep --line-buffered "member=Notify\|string"
Il attendra les notifications et lorsqu'une notification arrivera, il donnera les informations des notifications.
Par exemple, lorsque le son est augmenté / diminué ou qu'une piste de chanson est modifiée ou toute autre, elle donne le message. Je crée manuellement une notification de bureau à l'aide de la notify-send
commande sur n'importe quel autre terminal:
notify-send "Hello How are you?"
Ensuite, le premier terminal dans lequel la dbus-monitor
commande s'exécute donnera un message comme:
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"
Maintenant, la sortie ci-dessus peut être facilement transmise espeak
pour lire le message. Par exemple,
Remplacer la dbus-monitor
commande ci-dessus par ce qui suit lira le message de notification:
Vérifiez, comment ça marche:
Exécutez cette commande dans un terminal et laissez-la s'exécuter:
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 {}
Je sais que c'est devenu très long, mais il n'y a pas d'autre moyen de le réduire car le filtrage de la notification réelle l'a rendu long.
Exécutez ensuite une notification sur le bureau de la manière décrite ci-dessus à l'aide de notify-send
ou toute autre chose. J'utilise notify-send
. Donc, exécuter la commande suivante dans un autre terminal:
notify-send "Hello! I am Saurav Kumar."
Dès que vous exécutez la commande, elle annonce (lit) la notification.
Bien qu'il ait mangé mes 4-5 heures, mais je suis heureux maintenant de le faire fonctionner.
Vous pouvez également créersaynoti
et exécuter votre propre commande chaque fois que vous souhaitez une notification de lecture. En suivant ces étapes, vous pouvez le faire:
Enregistrez d'abord la commande réelle dans un fichier appelé saynoti
. Vous pouvez utiliser n'importe quel nom de fichier qui deviendra votre nom de commande réel.
Rendez ensuite le fichier exécutable et déplacez-le ou copiez-le dans /bin
:
chmod +x saynoti
sudo cp saynoti /bin
Maintenant, vous pouvez simplement exécuter votre nouvelle commande pour démarrer la notification vocale :
saynoti
Pour tuer le processus en cours, vous pouvez exécuter cette commande:
pkill dbus-monitor
ou appuyez simplement sur Ctrl+ Csur le terminal où saynoti
s'exécute.
Vous pouvez également exécuter saynoti
chaque fois que votre système démarre en en faisant une application de démarrage .
Je voudrais vous remercier pour cette question. À cause de cette question, j'ai appris beaucoup de choses. :)
Répondez si vous rencontrez un problème ou si vous avez besoin de changement / modification supplémentaire. Je suis sûr que vous serez heureux d'obtenir la version finale de travail.
dbus-monitor
, je veux commencer à apprendre
J'ai eu des ennuis avec un supplément "dans mes adresses e-mail, j'ai donc ajouté cela à la ligne de code ci-dessus car espeak n'a pas besoin du tout" pour lire;)
| sed 's / \ "// g' |
=>
| grep --line-buffered -v '^ \ s * $' | sed 's / \ "// g' | xargs -I '{}' espeak {}
Travail COOL. Mieux que de modifier la notification-envoyer la bibliothèque elle-même 4 "Bonjour! Je suis Saurav Kumar."
mise à jour: ne fonctionne pas régulièrement. Je vais utiliser | tee -a $ file |