Используя скрипты bash/shell, я гроулнотифи сообщал мне, когда была неудачная попытка входа в систему, и отображал изображение того, кто сидел перед компьютером, в уведомлении о рычании. Есть ли способ, которым я могу использовать рычание, чтобы запустить предварительный просмотр, чтобы отобразить изображение при нажатии на уведомление?
Запуск приложения по щелчку уведомления о рычании
Ответы (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
обрабатывает обратный вызов самостоятельно. Вам не нужно приостанавливать выполнение, и этот метод, вероятно, решит проблему, обнаруженную Вазом для нескольких уведомлений. Передавая строку 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
Надеюсь, поможет!
Вот один из способов сделать это:
(
# 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
)
Основная проблема заключается в том, что если появляется более одного уведомления, щелчок по одному из них приведет к разблокировке всех блокирующих подоболочек GroulNotify (открытие всех изображений одновременно). По какой-то причине это кажется стандартным поведением для рычания. На самом деле это может не быть проблемой, за исключением того, что он ведет себя не так хорошо, как если бы он правильно ставил их в очередь (я пытался сделать это с некоторым сумасшествием рекурсивного управления заданиями подоболочки, но я не думаю, что bash позволит мне это сделать. .. конечно, есть более сложный способ поставить их в очередь.)
-w
для блокировки growlnotify до тех пор, пока пользователь не ответит, а затем запустить предварительный просмотр из вашего сценарий? - person glenn jackman   schedule 02.09.2011