有没有办法让Ubuntu读出通知?
Ubuntu有一个非常酷的通知系统。 有没有办法让Ubuntu在出现时读出通知?
或者是否可以将通知中的文本链接到espeak
?
这个问题非常有趣,所以作为答案。
dbus-monitor
在执行时等待信号,当到达时它会捕获并提供有关它的相应信息。 同样,可以执行它以获取有关通知的信息。 执行时:
dbus-monitor "interface='org.freedesktop.Notifications'" | grep --line-buffered "member=Notify\|string"
它会等待通知,当有任何通知到达时,它会提供通知信息。
例如,当声音增加/减少或任何歌曲曲目被更改时,或者任何其他歌曲曲目都会发出消息。 我在任何其他终端上使用notify-send
命令手动创建桌面通知:
notify-send "Hello How are you?"
然后执行dbus-monitor
命令的第一个终端将给出如下消息:
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"
现在上面的输出可以很容易地传递给espeak
来读取消息。 例如,
用以下代替上面的dbus-monitor
命令将读取通知消息:
检查,它是如何工作的:
-
在终端中执行此命令并使其保持运行状态:
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 {}
我知道它已经变得很长,但没有其他方法可以使它变小,因为实际通知的过滤使它变得冗长。
-
然后以我上面描述的方式使用
notify-send
或其他任何东西运行桌面通知。 我正在使用notify-send
。 所以在其他终端执行以下命令:notify-send "Hello! I am Saurav Kumar."
一旦执行该命令,它将说出(读取)通知。
虽然我吃了4-5个小时,但现在我很高兴能让它运转起来。
您也可以像saynoti
一样saynoti
自己的命令,并在每次需要阅读通知时执行它。 按照以下步骤操作即可:
-
首先将实际命令保存到名为
saynoti
的文件中。 您可以使用任何将成为您的实际命令名称的文件名。 -
然后使文件可执行并将其移动或复制到
/bin
:chmod +x saynoti sudo cp saynoti /bin
-
现在您只需执行新命令即可启动Speaking Notification :
saynoti
-
要终止正在运行的进程,您可以执行以下命令:
pkill dbus-monitor
或者只需在
saynoti
正在运行的终端上按Ctrl + C. -
您还可以在每次系统启动时运行
saynoti
,使其成为启动应用程序 。
我想对此问题说声谢谢。 由于这个问题,我学到了很多东西。 🙂
如果您遇到任何问题或需要进一步更改/修改,请回复。 我相信你会很高兴得到最终的工作版本。
我有额外的麻烦“在我的电子邮件地址中,因此我已将此添加到上面的代码行,因为espeak不需要”根本就读出来;)
| sed’s / \“// g’|
=>
| grep –line-buffered -v’^ \ s * $’| sed’s / \“// g’| xargs -I'{}’espeak {}
COOL工作。 比调整notify-send lib本身要好4“你好!我是Saurav Kumar。”
更新:不稳定。 我会用| tee -a $ file |