Как сделать всплывающее окно/оповещение терминала Mac? Помощью AppleScript?
Я хочу, чтобы моя программа отображала предупреждение, уведомление, все, что отображает мой пользовательский текст. Как это делается? Кроме того, можно ли сделать один с несколькими кнопками, которые устанавливают переменную?
аналогично пакету:
echo msgbox""<a.vbs&a.vbs
7 ответов:
использовать
osascript
. Например:osascript -e 'tell app "Finder" to display dialog "Hello World"'
замена "Finder" с любым приложением вы хотите. Примечание если приложение работает в фоновом режиме, в диалоговом окне будет отображаться в фоновом режиме. Чтобы всегда показывать на переднем плане, используйте "системные события"в качестве приложения:
osascript -e 'tell app "System Events" to display dialog "Hello World"'
подробнее о Mac OS X подсказки.
Если вы используете любую версию Mac OS X, которая имеет Центр уведомлений, вы можете использовать terminal-notifier камень. Сначала установите его (вам может понадобиться
sudo
):gem install terminal-notifier
а потом просто:
terminal-notifier -message "Hello, this is my message" -title "Message Title"
см. также это OS X Daily post.
используйте эту команду для запуска уведомления центра уведомлений от терминала.
osascript -e 'display notification "Lorem ipsum dolor sit amet" with title "Title"'
Это позволит восстановить фокус на предыдущее приложение и выйти из сценария, если ответ был пуст.
a=$(osascript -e 'try tell app "SystemUIServer" set answer to text returned of (display dialog "" default answer "") end end activate app (path to frontmost application as text) answer' | tr '\r' ' ') [[ -z "$a" ]] && exit
Если вы сказали системные события для отображения диалогового окна, будет небольшая задержка, если он не был запущен раньше.
для получения документации о диалоге отображения откройте словарь стандартных дополнений в Редакторе AppleScript или см. AppleScript Language Guide.
и мои 15 центов. Один лайнер для терминала mac и т. д. просто установите MIN= на что угодно и сообщение
MIN=15 && for i in $(seq $(($MIN*60)) -1 1); do echo "$i, "; sleep 1; done; echo -e "\n\nMac Finder should show a popup" afplay /System/Library/Sounds/Funk.aiff; osascript -e 'tell app "Finder" to display dialog "Look away. Rest your eyes"'
бонусный пример для вдохновения, чтобы объединить больше команд; это поставит mac в режим ожидания сна на сообщение тоже :) логин sudo необходим тогда, умножение как 60*2 в течение двух часов идет также
sudo su clear; echo "\n\nPreparing for a sleep when timers done \n"; MIN=60*2 && for i in $(seq $(($MIN*60)) -1 1); do printf "\r%02d:%02d:%02d" $((i/3600)) $(( (i/60)%60)) $((i%60)); sleep 1; done; echo "\n\n Time to sleep zzZZ"; afplay /System/Library/Sounds/Funk.aiff; osascript -e 'tell app "Finder" to display dialog "Time to sleep zzZZ"'; shutdown -h +1 -s
двойники вопрос и ответ будет доступен в: https://superuser.com/questions/246353/how-to-make-the-terminal-do-a-pop-up-alert-in-osx
Я сделал скрипт, чтобы решить эту, которая составляет здесь. Вам не нужно никакого дополнительного программного обеспечения для этого. Установка:
brew install akashaggarwal7/tools/tsay
Использование:sleep 5; tsay
Не стесняйтесь вносить свой вклад!