Ответы:
Используйте 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 подсказки .
Используйте эту команду для запуска уведомления центра уведомлений с терминала.
osascript -e 'display notification "Lorem ipsum dolor sit amet" with title "Title"'
Если вы используете любую версию Mac OS X, в которой есть Центр уведомлений, вы можете использовать гем терминала-уведомителя . Сначала установите его (может понадобиться sudo
):
gem install terminal-notifier
а потом просто:
terminal-notifier -message "Hello, this is my message" -title "Message Title"
См. Также этот пост по OS X Daily .
brew install terminal-notifier
также подойдет, если вы предпочитаете заваривать.
Это вернет фокус предыдущему приложению и выйдет из сценария, если ответ будет пустым.
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 .
С AppleScript :
display notification "Notification text" with title "Notification Title" subtitle "Notification sub-title" sound name "Submarine"
С терминалом / bash и osascript
:
osascript -e 'display notification "Notification text" with title "Notification Title" subtitle "Notification sub-title" sound name "Submarine"'
Не воспринимает ни подзаголовок, ни звук жестко.
С AppleScript :
display alert "Alert title" message "Your message text line here."
С терминалом / bash и osascript
:
osascript -e 'display alert "Alert title" message "Your message text line here."'
Добавьте в bash строку для воспроизведения звука после строки предупреждения:
afplay /System/Library/Sounds/Hero.aiff
Добавьте ту же строку в AppleScript , позволяя сценарию оболочки выполнять работу:
do shell script ("afplay /System/Library/Sounds/Hero.aiff")
Список встроенных звуков macOS на выбор .
Перефразировано из удобной статьи об уведомлениях терминала и приложениях .
И мои 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
Аналогичный вопрос и ответ доступны по адресу: /superuser/246353/how-to-make-the-terminal-do-a-pop-up-alert-in-osx
Я сделал сценарий для решения этой проблемы, который находится здесь . Для этого не требуется никакого дополнительного программного обеспечения. Установка:
brew install akashaggarwal7/tools/tsay
Использование:
sleep 5; tsay
Не стесняйтесь вносить свой вклад!