如何制作Mac终端弹出/警报? AppleScript的?

时间:2011-04-07 21:48:32

标签: macos popup terminal applescript alert

我希望能够让我的程序显示警告,通知,显示我的自定义文本。这是怎么做到的?此外,是否可以制作一个带有几个设置变量的按钮?

与批次相似: echo msgbox""<a.vbs&a.vbs

9 个答案:

答案 0 :(得分:187)

使用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 Hints

答案 1 :(得分:58)

如果您使用的是具有通知中心的任何Mac OS X版本,则可以使用terminal-notifier gem。首先安装它(您可能需要sudo):

gem install terminal-notifier

然后简单地说:

terminal-notifier -message "Hello, this is my message" -title "Message Title"

另见this OS X Daily post

答案 2 :(得分:54)

使用此命令从终端触发通知中心通知。

osascript -e 'display notification "Lorem ipsum dolor sit amet" with title "Title"'

答案 3 :(得分:6)

如果答案为空,这会将焦点恢复到上一个​​应用程序并退出脚本。

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

答案 4 :(得分:5)

在通知中添加字幕标题声音

使用 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 中添加同一行,让 shell脚本完成工作:

do shell script ("afplay /System/Library/Sounds/Hero.aiff")

sounds to choose from here中内置的macOS列表。

摘自terminal and applescript notifications上一篇方便的文章。

答案 5 :(得分:2)

我的15美分。 mac终端等的一个内线只是将MIN =设置为any和消息

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

答案 6 :(得分:1)

答案 7 :(得分:1)

简单通知

osascript -e 'display notification "hello world!"'

带有标题的通知

osascript -e 'display notification "hello world!" with title "This is the title"'

通知并发出声音

osascript -e 'display notification "hello world!" with title "Greeting" sound name "Submarine"'

带变量的通知

osascript -e 'display notification "'"$TR_TORRENT_NAME has finished downloading!"'" with title " ✔ Transmission-daemon"'

学分:https://code-maven.com/display-notification-from-the-mac-command-line

答案 8 :(得分:0)

我制作了一个脚本来解决这个here。您不需要任何额外的软件。 安装:
brew install akashaggarwal7/tools/tsay
用法:
sleep 5; tsay

随意贡献!