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