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

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

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

我会编写程序来实现这一点。我需要的帮助只是如何“拦截”通知。

答案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该通知的程序。

相关内容