bash/shell スクリプトを使用して、growlnotify を使用して、ログイン試行が失敗したときに通知し、コンピューターの前に座っている人の写真をうなり通知で表示します。growlnotify を使用してプレビューを起動し、通知がクリックされたときに画像を表示する方法はありますか?
2 に答える
できることの 1 つは、 に--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
で始まる文字列を渡した場合にのみ、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つの方法は次のとおりです。
(
# 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
)
これに関する主な問題は、複数の通知が表示された場合、1 つをクリックすると、ブロックしているすべての growlnotify サブシェルのブロックが解除される (すべての写真が一度に開く) ことです。これは、何らかの理由でうなり声の標準的な動作のようです。それは実際には問題ではないかもしれませんが、適切にキューに入れられた場合と同じように動作しません (再帰的なサブシェル ジョブ コントロールの狂気でこれを実行しようとしましたが、bash では実行できないと思います。 ..実際にそれらをキューに入れるには、もっと複雑な方法があります。)