每次特定应用程序发出通知时执行脚本

我搜索了一下安静,但所有的文章和答案只告诉你如何创建自己的通知。 我想要做的是跟踪所有应用程序发出的所有通知,并在每次发出特定通知时执行特定脚本。

我会写我的程序来做这件事。 我需要帮助的是如何“拦截”通知。

使用(和识别)通知来触发后续操作

如果我们在这个非常好的答案中编辑提议的片段,我们可以将被调用的通知写入文件:

 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 '{}' echo {} > file.txt 

或以其他方式使用它来触发后续行动。

一个例子

如果我们编辑代码段以在弹出通知时运行脚本:

 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 '{}' /bin/bash /path/to/script.sh {} 

script.sh是:

 #!/bin/bash string=$1 match="een aap op een fiets" if [[ $string == $match ]] then gedit fi 

然后,每次,如果通知匹配“een aap op een fiets”:

在此处输入图像描述

gedit会打开:)

在此处输入图像描述

注意

尽管代码可以完美地拦截通知以触发任何类型的操作,但我发现无法识别调用通知的pid