Запустите приложение по щелчку уведомления о рычании - PullRequest
4 голосов
/ 02 сентября 2011

С помощью сценариев bash / shell я постоянно уведомляю меня, когда произошла неудачная попытка входа в систему, и отображаю фотографию того, кто сидел перед компьютером в уведомлении рычания.Есть ли способ, с помощью которого я могу использовать growlnotify для запуска предварительного просмотра, чтобы отобразить изображение при нажатии на уведомление?

Ответы [ 2 ]

3 голосов
/ 08 мая 2013

Одна вещь, которую вы могли бы сделать, это передать --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

Надеюсь, это поможет!

0 голосов
/ 09 апреля 2013

Вот один из способов сделать это:

(
  # 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 позволит мне это сделать.... безусловно, есть более сложный способ поставить их в очередь.)

...