Answers:
这个问题真的很有趣,可以作为答案。
dbus-monitor
当执行等待信号时,它会捕获并提供有关它的适当信息。同样,可以执行它以获取有关Notifications的信息。执行时:
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
。您可以使用将成为您实际命令名称的任何文件名。
然后将文件设为可执行文件,然后将其移动或复制到/bin
:
chmod +x saynoti
sudo cp saynoti /bin
现在,您只需执行新命令即可启动语音通知:
saynoti
要终止正在运行的进程,可以执行以下命令:
pkill dbus-monitor
或者只需在运行终端上按Ctrl+ 。Csaynoti
您也可以saynoti
在系统每次启动时运行,使其成为启动应用程序。
我想对这个问题谢谢你。由于这个问题,我学到了很多东西。:)
如果您有任何问题或需要任何进一步的更改/修改,请回复。我相信您会很高兴获得最终的工作版本。
dbus-monitor
想从哪里学习,我想开始学习