Я бы хотел использовать возможности Центра уведомлений 10.8 в сценариях AppleScripts и сценариях оболочки, которые я пишу.
Есть ли встроенная команда или сторонняя библиотека, которую я могу использовать из сценариев AppleScript или оболочки?
В идеале можно контролировать тип и значок уведомления, но приветствуется даже возможность запуска основного баннера с изображением акции (но с пользовательским текстом).
terminal
applescript
mountain-lion
notification-center
command-line
Натан Гринштейн
источник
источник
Ответы:
С Mavericks и более поздними версиями вы можете сделать это, используя «экранное уведомление» AppleScript:
Вот и все - буквально так просто! Нет 3 - я сторона он библиотеки или приложения не требуется , и полностью портативный для использования в других системах. 10.9 уведомление сверху, 10.10 DP в середине, 10.10 снизу.
AppleScript можно запустить из оболочки, используя / usr / bin / osascript:
Вы также можете дополнительно настроить оповещение, добавив…
подзаголовок
Добавьте «субтитры», а затем строку или переменную, содержащую субтитры.
Приведенный выше пример создает следующее уведомление:
звук
Добавьте название звука, а затем название звука, который будет воспроизводиться вместе с уведомлением.
Допустимые имена звуков - это имена звуков, расположенных в…
~/Library/Sounds
/System/Library/Sounds
Отправка уведомлений может быть заключена в сценарий командной строки. Следующий код может быть запущен в Терминале и добавит скрипт в / usr / local / bin (должен существовать, добавить в $ PATH) с именем
notify
.Это скрипт, который выше добавит для уведомления.
Теперь для отображения уведомления:
источник
display notification
том, что когда вы нажимаете на нее, появляется диалог открытия файла."display ... '$mytext' ..."
, но нужно спасся двойные кавычки:"display notification \"$mytext\" ..."
.Терминал-уведомитель
Из README:
источник
Я просто хочу добавить примечание к ответу @ grgarside, потому что я знаю, что многие люди хотят иметь всплывающее уведомление, которое может быть отклонено только нажатием кнопки.
Я нашел решение для вас:
На самом деле это контролировалось настройкой в System Preference, а не каким-либо параметром в написанном скрипте. Эти два изображения должны объяснить все это
Спасибо @grgarside за отличный ответ.
источник
Script Editor
только дляScript Editor.app
иosascript
. В рабочем процессе службы это такAutomator Runner
. Когда внутриAutomator.app
, этоAutomator
.Теперь вы можете сделать это с Growl2 ( доступно в App Store ). Установите Growl и включите «Уведомления OS X» (скриншот)
Кроме того, вам нужно установить GrowlNotify для инструмента командной строки для отправки уведомлений Growl. Вы можете скачать этот инструмент бесплатно на странице загрузки .
Теперь вы можете генерировать уведомления Growl из командной строки, которые будут перенаправлены в Центр уведомлений. Например:
Обратите внимание, что в настоящее время не представляется возможным изменить значок приложения.
источник
--icon path/to/icon.png
для значков.Недавно я разветвил терминал-уведомитель для создания инструмента командной строки для отображения уведомлений уведомлений (с действиями) и уведомлений типа ответа.
Я использую его со своими сценариями оболочки и приложениями golang, чтобы получать интерактивные ответы от пользователей.
https://github.com/vjeantet/alerter
источник
@grgarside «s решение хорошо, но он уязвим для инъекций сценария, который может быть серьезной проблемой безопасности , когда это используется , чтобы , например , содержимое файла журнала дисплея или что - то подобное.
Это должно быть безопаснее:
источник
I have a "laser"
того, что вам не сказали, что у вас есть ошибка синтаксиса, "цитируя" свои "слова". С побегом вы можете:script 'I have a "laser"'
Поскольку Growl не является бесплатным, а терминал-уведомитель недоступен в системах до 10.8, я склонен использовать CocoaDialog . Это бесплатный и открытый исходный код, поэтому вы также можете распространять его вместе со своими сценариями.
Если вам не нужно много настроек, вы также можете использовать AppleScript,
display notification
который вы также можете вызывать из оболочки, как уже упоминали другие.Но учтите, что AppleScript, кажется, требует двойных кавычек. Так что если вам нужны переменные, это не будет работать :
Вам придется использовать экранированные двойные кавычки. Это некрасиво, но работает :
источник
osascript -e 'display notification "Lorem ipsum dolor sit amet" with title "Title"'
(Это альтернативная реализация, основанная на превосходном ответе @ grgarside.)
AppleScript можно интерпретировать напрямую, вставив
osascript
строку shebang.Сохраните это как
notify
где-нибудь на вашем пути, например/usr/local/bin/notify
, и сделайте его исполняемым (chmod +x notify
). Он принимает сообщение и необязательный заголовок. Если у любого из них есть пробел, заключите его в кавычки, чтобы оболочка интерпретировала его как один аргумент.источник
Вот классный пример, который я использую в сценарии ruby на OS X (чтобы я мог запустить сценарий и получить обновление даже после переключения из окна):
источник
Альтернатива:
В
.bash_profile
:Используйте команду:
sys-notify "title" "message"
источник
Официальная документация
https://developer.apple.com/library/content/documentation/LanguagesUtilities/Conceptual/MacAutomationScriptingGuide/DisplayNotifications.html
Копирование текста здесь, в случае, если документ перемещен или удален.
источник
Спасибо, это было как раз то, что мне было нужно для некоторых пользовательских скриптов. Я сделал небольшую модификацию, чтобы добавить субтитры и звук. Если значение не указано, оно игнорируется.
Для звука используйте звуковое имя файла без расширения из / System / Library / Sounds. Например, чтобы использовать файл Ping.aiff, используйте Ping за 4 доллара.
источник