4

使用 bash/shell 脚本,当登录尝试失败时,我会发出咆哮通知,并在咆哮通知中显示坐在计算机前的人的照片。有没有办法可以在单击通知时使用 growlnotify 启动预览以显示图片?

4

2 回答 2

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随后的命令中删除了。由于我们使用--url,growlnotify自己处理回调。您无需暂停执行,此方法可能会解决 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

希望能帮助到你!

于 2013-05-08T18:55:40.290 回答
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 会让我这样做。 ..肯定有一种更复杂的方式可以将它们实际排队。)

于 2013-04-08T22:36:57.277 回答