使用 osascript -e "display notification" 时更改通知图标

Pet*_*der 9 applescript

我正在尝试为 emacs 编写一个插件,该插件使用 OS X 的本机通知显示来显示通知。

我遇到了terminal-notifier哪个有效,但它是一种依赖项,不适用于每台 Mac。另外,应该让用户知道他们需要安装软件包。

我想要做的是调用一个进程osascript -e并让它显示通知。问题是,更改其图标的唯一方法是从外部包中。有什么方法可以osascript -e显示我想要的内容。

开始sudo osascript似乎这样做,但它似乎是糟糕的设计,我还需要找到一种方法来每次都传递 root 密码。

Joe*_*eid 7

你不能。这根本不是暴露给 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 文档中的显示对话框部分。

  • 给像我一样对此感到困惑的读者的说明:最初的问题是关于*通知*,但这里的两个示例都显示了一个*对话框*(必须点击确定+取消按钮)。 (3认同)

MJ *_*lsh 6

实际上,这是可能的。

只需将您的脚本另存为应用程序,然后applet.icns在应用程序Contents/Resources文件夹中为您想要的图标切换文件。

从您的脚本发送的任何通知都将使用该图标。


Rob*_*ard 5

不幸的是,“显示通知”文档显示您不能

\n\n
\n

display notification

\n\n

使用通知中心发布通知,包含标题、副标题和说明,并可选择播放声音。

\n\n

语法
\n display notification\xe2\x80\x93 文本,必需
\n with title\xe2\x80\x93 文本,可选
\n subtitle\xe2\x80\x93 文本,可选
\n sound name\xe2\x80\x93 文本,可选

\n
\n\n

(即使使用/sf/answers/3435531781/tell application "..."中的技巧也会留下默认的通知图标。)

\n\n

之所以terminal-notifier 可以,是因为它直接使用通知中心 API,据我所知,osascript 不提供接口。

\n