如何确定 macOS 10.14 强调色?

How can I determine the macOS 10.14 accent color?

MacOS 10.14 (Mojave) 具有深色界面风格和用户可选择的颜色重点。如何读取这些值并监听变化?

编辑:现在 macOS 11 推出了具有自己独特配色方案的新 M1 iMac。我可以使用这样的 iMac,但无法确定强调色。它是黄色版本,AppleAccentColor 报告为“1”,即转化为橙色。

这存储在系统默认值中,可通过 NSDistributedNotificationCenter 获得。

AppleInterfaceStyle 设置为 Dark 时,深色模式处于活动状态。可以通过监听 InterfaceStyleChanged 通知来观察变化。

强调色可以从AppleAccentColor读出。可以通过侦听 AppleColorPreferencesChangedNotification 通知来观察更改。 returns 都是一个可选的整数,映射到:

nil: blue
-1: graphite
0: red
1: orange
2: yellow
3: green
5: purple
6: pink

您可以通过 运行 defaults read -g AppleAccentColor 从终端或脚本读取此值。请注意,如果值为 nil(默认为蓝色),您实际上会收到一条错误消息,内容为 The domain/default pair of (kCFPreferencesAnyApplication, AppleAccentColor) does not exist.


macOS 11 测试版更新

nil 现在是默认的 multicolor 外观,blue 已移至 4

nil: multicolor
-1: graphite
0: red
1: orange
2: yellow
3: green
4: blue
5: purple
6: pink

强调色在 macOS 10.14 或更高版本中作为 NSColor.controlAccentColor 提供。

NSView 级别上,您可以实施事件处理程序 viewDidChangeEffectiveAppearance() 来跟踪强调颜色的变化。