Запустите приложение по щелчку уведомления о рычании

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

Другие вопросы по тегам