我正在尝试为 emacs 编写一个插件,该插件使用 OS X 的本机通知显示来显示通知。
我遇到了terminal-notifier
哪个有效,但它是一种依赖项,不适用于每台 Mac。另外,应该让用户知道他们需要安装软件包。
我想要做的是调用一个进程osascript -e
并让它显示通知。问题是,更改其图标的唯一方法是从外部包中。有什么方法可以osascript -e
显示我想要的内容。
开始sudo osascript
似乎这样做,但它似乎是糟糕的设计,我还需要找到一种方法来每次都传递 root 密码。
你不能。这根本不是暴露给 AppleScript 的 macOS 功能。
如果您需要自定义图标,请考虑使用弹出“对话框”而不是通知中心弹出窗口。使用超时和按钮,您可以重新创建大部分功能,但不能重新创建集成或美感。
在“显示对话框”中,如果您希望使用标准图标:0、1 或 2(停止、注意或警告),也许不要让 osascript 作为显示图标的程序。查找器,例如:
osascript -e 'tell application "Finder"' -e 'activate' -e 'display dialog "this is the note icon." with icon note' -e 'end tell'
或者没有,tell application…
您可以通过直接引用来使用您选择的图标,例如终端应用程序的图标:
osascript -e 'display dialog "Terminal icon" with icon alias "Macintosh HD:Applications:Utilities:Terminal.app:Contents:Resources:Terminal.icns"'
我不确定您的意思,“更改其图标的唯一方法是从外部包中。有什么方法可以osascript -e
显示我想要的内容。” 确切地说,你想要什么?你尝试过什么?
这是Apple 文档中的显示对话框部分。
实际上,这是可能的。
只需将您的脚本另存为应用程序,然后applet.icns
在应用程序Contents/Resources
文件夹中为您想要的图标切换文件。
从您的脚本发送的任何通知都将使用该图标。
不幸的是,“显示通知”文档显示您不能:
\n\n\n\n\n\n\n
display notification
使用通知中心发布通知,包含标题、副标题和说明,并可选择播放声音。
\n\n语法
\n
\ndisplay notification
\xe2\x80\x93 文本,必需
\nwith title
\xe2\x80\x93 文本,可选
\nsubtitle
\xe2\x80\x93 文本,可选
\nsound name
\xe2\x80\x93 文本,可选
(即使使用/sf/answers/3435531781/tell application "..."
中的技巧也会留下默认的通知图标。)
之所以terminal-notifier
可以,是因为它直接使用通知中心 API,据我所知,osascript 不提供接口。
归档时间: |
|
查看次数: |
8320 次 |
最近记录: |