我搜索了一下,但所有的文章和答案都只告诉你如何创造您自己的通知。我想要做的是跟踪所有应用程序发出的所有通知,并在每次发出特定通知时执行特定脚本。
我会编写程序来实现这一点。我需要的帮助只是如何“拦截”通知。
答案1
使用(并识别)通知触发后续操作
如果我们编辑建议的代码片段这个非常好的答案稍等一下,我们可以将调用的通知写入文件:
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
该通知的程序。