我正在尝试为emacs编写一个插件,该插件使用OS X的本机通知显示来显示通知。
我遇到了terminal-notifier
,但它是一个依赖,不适用于每个mac。此外,应该让用户意识到他们需要安装包。
我想要做的是调用流程osascript -e
并让它显示通知。问题是,更改其图标的唯一方法是从外部捆绑。有没有办法让osascript -e
显示我想要的东西。
开始sudo osascript
似乎这样做,但它似乎是糟糕的设计,我还需要找到一种方法来每次传递root密码。
答案 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
文件切换为所需的图标即可。
从脚本发送的任何通知都将使用该图标。