从命令行获取OS X通知中心状态


Answers:


8

实际上,您可以确定当前是否启用了“请勿打扰”。通知中心将plist放置在您可以读取其值的以下位置。运行以下命令以找到plist文件:

ls ~/Library/Preferences/ByHost/com.apple.notificationcenterui.*.plist

现在,您可以使用以下方法从刚刚找到的plist中读取值:

defaults read ~/Library/Preferences/ByHost/com.apple.notificationcenterui.8D3EA20D-8D7F-52E2-9F99-BC17A13A3F0E.plist

注意:您的实际文件名可能不同于上面列出的文件名。

您将看到一个名为“ doNotDisturb”的键,其值为1或0(启用或禁用)

您还可以通过执行以下操作更改其状态:

defaults write ~/Library/Preferences/ByHost/com.apple.notificationcenterui.8D3EA20D-8D7F-52E2-9F99-BC17A13A3F0E.plist doNotDisturb 1

要么:

defaults write ~/Library/Preferences/ByHost/com.apple.notificationcenterui.8D3EA20D-8D7F-52E2-9F99-BC17A13A3F0E.plist doNotDisturb 0

为了使更改生效,您需要输入以下内容来重新启动Notification Center:

killall NotificationCenter

我实际上已经编写了一个非常简单的Automator脚本,所以现在我可以使用键盘快捷键启用/禁用“通知中心请勿打扰”。非常便利。:)


不幸的是,在El Capitan上无法启用/禁用此功能。
Zsolt Szatmari

在优胜美地上也不起作用
Gianfranco P.

这行不通。1.此UUID是专用于您的。2. killall NotificationCenter将设置重置为默认设置,但不重新加载设置。
辛巴

4

要在优胜美地获得请勿打扰状态,只需在终端中输入以下内容:

defaults read ~/Library/Preferences/ByHost/com.apple.notificationcenterui.plist doNotDisturb

1

我可能想到的最好的方法是安装终端通知程序,并从终端发送消息。

安装终端通知程序

终端通知程序可以通过Ruby Gems安装

类型:

sudo gem install终端通知程序

向NC发送消息

类型:

terminal-notifier -message“通知中心正在运行” -title“ NC状态”

如果通知中心正在运行,您将收到一条消息,提示“通知中心正在运行”


2
上面的代码对我来说效果很好,但这是一个手动解决方案,而不是程序状态指示,因此我没有给它+1作为对此问题的答案。但是,它在其他方面非常有用。
2014年

对此进行投票与选择正确答案是不同的。如果答案对您有所帮助,但没有回答,您可以给它一个赞。如果它回答了您的问题,请单击左侧的复选标记图标。
jmh

1

目前,以编程方式(包括通过命令行)与Notification Center进行交互的方式非常有限。作为InfluenceJamie指出,有终端通知,它允许你发送的命令行通知,但发送通知是几乎所有程序都在那一刻做。从我对开发人员文档的阅读中,程序只能发送和获取有关它们发送的特定通知的信息,没有有关Notifcation Center本身的状态信息或其他通知。也没有Applescript界面​​。

因此,目前,您只能手动测试通知是否通过,例如 ImpactJamie所建议),还是希望有人弄清楚Apple的私有API并创建命令行界面。


在MacOS中,每个首选项都存储在某些plist文件中,因此必须有一些“默认读取”的内容才能执行我要查找的操作。
user732274

1
好吧,这当然是有可能的,但是默认设置更多地用于永久首选项-临时设置可能不会存储在默认设置中。但是,如果ImpactJamie的建议对您不起作用,那可能是您最好的选择。
robmathers 2012年

如果不在plist中,应将其存储在哪里?
user732274'8

1

通知中心的设置存储在~/Library/Preferences/ByHost文件夹中,这意味着它是机器特定的设置。

您可以使用defaults -currentHost命令来读取其中的设置。-currentHost用于指定ByHost设置,而不是存储在中的普通用户专用设置~/Library/Preferences

defaults -currentHost read com.apple.notificationcenterui doNotDisturb

产值 1表示已激活,0已禁用。

实际上,以上命令正在从中读取选项 ~/Library/Preferences/ByHost/com.apple.notificationcenterui.<your-UUID>.plist文件中。

注意事项:设置ByHost选项defaults -currentHost write无效。这些选项确实已写入文件中,但没有被相应的守护程序重新加载。我猜这是一个错误。

参考文献

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.