使用osascript -e“显示通知”时更改通知图标

时间:2018-02-18 20:20:47

标签: applescript

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

我遇到了terminal-notifier,但它是一个依赖,不适用于每个mac。此外,应该让用户意识到他们需要安装包。

我想要做的是调用流程osascript -e并让它显示通知。问题是,更改其图标的唯一方法是从外部捆绑。有没有办法让osascript -e显示我想要的东西。

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

3 个答案:

答案 0 :(得分:1)

你做不到。这根本不是AppleScript公开的macOS功能。

如果您需要自定义图标,请考虑使用弹出“对话框”而不是“通知中心”弹出窗口。使用超时和按钮,您可以重新创建大部分功能,但不是集成和美学。

在“显示对话框”中,如果您想使用标准图标:0,1或2(停止,注释或注意),也许没有osascript是显示图标的程序。 Finder,例如:

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文档中的display dialog部分。

答案 1 :(得分:0)

不幸的是,"display notification" documentation shows that you can't

  

display notification

     

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

     

语法
  display notification –文字,必填
  with title –文字,可选
  subtitle –文字,可选
  sound name –文字,可选

(即使使用https://stackoverflow.com/a/49079025/3528中的tell application "..."技巧,也会使用默认的通知图标。)

terminal-notifier 之所以可以的原因是,据我所知,osascript没有using the Notification Center APIs directly的接口。

答案 2 :(得分:0)

实际上,这是可能的。

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

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