使用 bash/shell 脚本,当登录尝试失败时,我会发出咆哮通知,并在咆哮通知中显示坐在计算机前的人的照片。有没有办法可以在单击通知时使用 growlnotify 启动预览以显示图片?
2 回答
您可以做的一件事是将--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://...
字符串传递给--url
,growlnotify
单击通知后在系统的默认应用程序中打开引用的文件。
最后一个陷阱:--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
希望能帮助到你!
这是一种方法:
(
# 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 会让我这样做。 ..肯定有一种更复杂的方式可以将它们实际排队。)