Existe-t-il un moyen de faire lire des notifications à Ubuntu?

9

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?

Miaou
la source
Ce bugs.launchpad.net/ubuntu/+source/notify-osd/+bug/345357 indique que orca ne l'a pas fait et le fait à nouveau maintenant (?)
Rinzwind
1
orca lit tout et est très ennuyeux ce que je recherche est un moyen de lire uniquement les notifications de toute façon merci pour le support :)
Meow

Réponses:

17

Cette question est vraiment intéressante donc comme réponse.

dbus-monitorune 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-monitorcommande 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 espeakpour lire le message. Par exemple,

Remplacer la dbus-monitorcommande 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-sendou 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ù saynotis'exécute.

  • Vous pouvez également exécuter saynotichaque 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.

Saurav Kumar
la source
@Meow: Sonne bien que vous soyez satisfait du résultat. À l'avenir, si vous avez besoin de modifications, envoyez-moi un ping ici.
Saurav Kumar
@Meow: Vérifiez la version de travail finale. J'ai résolu tout le problème et cela fonctionne très bien. Vous serez heureux d'obtenir cette version.
Saurav Kumar
2
mec u'r génial ne peut rien demander d'autre; je l'ai placé dans ma liste de démarrage et cela fonctionne parfaitement merci beaucoup
Meow
d'où avez-vous entendu parler dbus-monitor, je veux commencer à apprendre
Edward Torvalds
@edwardtorvalds: Vous pouvez l'apprendre sur son site officiel à propos de Dbus et Dbus-Monitor. 1. freedesktop.org/wiki/Software/dbus 2. dbus.freedesktop.org/doc/dbus-monitor.1.html
Saurav Kumar
0

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 |

Jimmy
la source