只有在尚未发送时才发送

时间:2012-02-12 00:21:08

标签: linux bash shell

我正在运行linux mint 12(包基是Ubuntu Oneiric)。我本质上希望每分钟左右运行一个脚本,它会做一些事情,并且会给我真或假。如果是,我想要一个弹出通知。我正在考虑通知 - 发送,因为这似乎做了我想做的事情,以一种不引人注目的方式。但是我遇到了一些问题。

我不希望通知堆叠起来。如果它返回true并且我没有注意它,它将在下一次返回true并且当前这会导致通知堆叠起来。有没有办法检查通知是否已经发出,因此不发送另一个(如果我第一次没有注意到,可能会在10分钟后再次发送通知)。这项工作目前被设置为cronjob,但是如果我要让脚本不断运行并使用睡眠,我可以想到一种“hacky”获取此功能的方法,但我宁愿避免使用它。

此外,我如何才能使其在点击通知时启动我选择的应用程序/脚本?这似乎可以作为Dropbox等问题通知在这个庄园中表现,但我不确定是否通过notify-send完成。

任何让我指向正确方向的事情都会很棒。感谢。

2 个答案:

答案 0 :(得分:0)

通过快速浏览libnotify API,守护程序似乎没有向客户端返回任何标识未完成通知的内容。换句话说,它是一个“即发即忘”的API - 一旦你发送了显示弹出窗口的请求,你就无法确定弹出窗口是否仍在那里。我担心你运气不好,至少是发送邮件。

答案 1 :(得分:0)

一个简单的技巧是使用-t选项,以使该通知在下一次检查时到期。因此,例如,如果您每10分钟通过crontab检查一次,则可以使用

notify-send -t 600000 "You need to update your caffeine level".

这将在发布新通知的确切时间删除旧通知。