点击咆哮通知启动应用程序

时间:2011-09-02 18:33:46

标签: macos bash shell growl growlnotify

使用bash / shell脚本我告诉我什么时候登录尝试失败,并在咆哮通知中显示坐在电脑前的人的照片。有没有办法可以使用growlnotify来启动预览,以便在点击通知时显示图片?

2 个答案:

答案 0 :(得分:3)

您可以做的一件事就是将--url选项传递给growlnotify

领衔Vaz的例子:

(
  # load some cat pics... I promise they are actually cat pics but
  # I don't promise they won't go link-dead since I linked to google image caches
  # or something.
  img1=/tmp/catpic1; curl -L bit.ly/16IRub3 > $img1
  img2=/tmp/catpic2; curl -L bit.ly/XUCzHW > $img2

  # schedule growls... replace this of course with whatever
  # actually sends your growls
  for i in $img1 $img2; do
    ( growlnotify -s -m "oh noes $i" --image $i --url "file://ABSOLUTE_PATH/$i" ) &
    sleep 4
  done
)

请注意,我从参数中删除了-w以及后面的open命令。由于我们使用的是--urlgrowlnotify会自行处理回调。您不需要暂停执行,这种方法可能会解决Vaz为多个通知公开的问题。通过将file://...字符串传递给--urlgrowlnotify在单击通知后打开系统默认应用程序中的引用文件。

最终问题:--url只会在传递一个以http://开头的字符串时正确处理网址。 “google.com”或“www.google.com”无法使用。您的文件系统结构也是如此,您必须提供file:///Users/you/Pictures/cats.jpg

之类的内容

此功能自版本1.4开始提供,但是,根据我的检查,man中缺少此功能。

来源: https://code.google.com/p/growl/issues/detail?id=341 https://groups.google.com/d/msg/growldiscuss/nUdYxOevkxI/oYjxdhSEi98J

希望它有所帮助!

答案 1 :(得分:0)

这是一种方法:

(
  # load some cat pics... I promise they are actually cat pics but
  # I don't promise they won't go link-dead since I linked to google image caches
  # or something.
  img1=/tmp/catpic1; curl -L bit.ly/16IRub3 > $img1
  img2=/tmp/catpic2; curl -L bit.ly/XUCzHW > $img2

  # schedule growls... replace this of course with whatever
  # actually sends your growls
  for i in $img1 $img2; do
    ( growlnotify -ws -m "oh noes $i" --image $i ; open -a preview $i ) &
    sleep 4
  done
)

这个问题的主要问题是,如果出现多个通知,单击一个会导致所有阻止growlnotify子shell解除阻塞(一次打开所有图片)。由于某种原因,这似乎是咆哮的标准行为。这可能不是一个问题,除非它的行为不如它正确地将它们排队好(我尝试用一​​些递归的子shell作业控制疯狂但我不认为bash会让我这样做。 ..当然可以采取更加复杂的方式来实际排队。)