Відповіді:
Використовуйте 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
Не соромтеся робити внесок!