systemPreferences
获取系统偏好设置。
const { systemPreferences } = require('electron')
console.log(systemPreferences.getEffectiveAppearance())
事件
systemPreferences 对象会发出以下事件
事件: 'accent-color-changed' Windows Linux
返回
eventEventnewColor字符串 - 用户分配给系统强调色的新的 RGBA 颜色。
事件: 'color-changed' Windows
返回
eventEvent
方法
systemPreferences.isSwipeTrackingFromScrollEventsEnabled() macOS
返回 boolean - 是否启用了“在页面之间滑动”设置。
systemPreferences.postNotification(event, userInfo[, deliverImmediately]) macOS
event字符串userInfoRecord<string, any>deliverImmediately布尔值 (可选) -true表示即使订阅应用程序处于非活动状态也立即发布通知。
将 event 作为 macOS 的原生通知发布。userInfo 是一个对象,包含与通知一起发送的用户信息字典。
systemPreferences.postLocalNotification(event, userInfo) macOS
event字符串userInfoRecord<string, any>
将 event 作为 macOS 的原生通知发布。userInfo 是一个对象,包含与通知一起发送的用户信息字典。
systemPreferences.postWorkspaceNotification(event, userInfo) macOS
event字符串userInfoRecord<string, any>
将 event 作为 macOS 的原生通知发布。userInfo 是一个对象,包含与通知一起发送的用户信息字典。
systemPreferences.subscribeNotification(event, callback) macOS
event字符串 | nullcallbackFunctionevent字符串userInfoRecord<string, unknown>object字符串
返回 number - 此订阅的 ID
订阅 macOS 的原生通知,当相应的 event 发生时,会使用 callback(event, userInfo) 调用 callback。userInfo 是一个对象,包含与通知一起发送的用户信息字典。object 是通知的发送者,目前仅支持 NSString 值。
返回订阅者的 id,可用于取消订阅该 event。
在底层,此 API 订阅了 NSDistributedNotificationCenter,event 的示例值包括
AppleInterfaceThemeChangedNotificationAppleAquaColorVariantChangedAppleColorPreferencesChangedNotificationAppleShowScrollBarsSettingChanged
如果 event 为 null,则 NSDistributedNotificationCenter 不会将其用作向观察者传递的标准。有关更多信息,请参阅 文档。
systemPreferences.subscribeLocalNotification(event, callback) macOS
event字符串 | nullcallbackFunctionevent字符串userInfoRecord<string, unknown>object字符串
返回 number - 此订阅的 ID
与 subscribeNotification 相同,但使用 NSNotificationCenter 进行本地默认设置。这对于诸如 NSUserDefaultsDidChangeNotification 之类的事件是必要的。
如果 event 为 null,则 NSNotificationCenter 不会将其用作向观察者传递的标准。有关更多信息,请参阅 文档。
systemPreferences.subscribeWorkspaceNotification(event, callback) macOS
event字符串 | nullcallbackFunctionevent字符串userInfoRecord<string, unknown>object字符串
返回 number - 此订阅的 ID
与 subscribeNotification 相同,但使用 NSWorkspace.sharedWorkspace.notificationCenter。这对于诸如 NSWorkspaceDidActivateApplicationNotification 之类的事件是必要的。
如果 event 为 null,则 NSWorkspaceNotificationCenter 不会将其用作向观察者传递的标准。有关更多信息,请参阅 文档。
systemPreferences.unsubscribeNotification(id) macOS
idInteger
移除具有 id 的订阅者。
systemPreferences.unsubscribeLocalNotification(id) macOS
idInteger
与 unsubscribeNotification 相同,但从 NSNotificationCenter 移除订阅者。
systemPreferences.unsubscribeWorkspaceNotification(id) macOS
idInteger
与 unsubscribeNotification 相同,但从 NSWorkspace.sharedWorkspace.notificationCenter 移除订阅者。
systemPreferences.registerDefaults(defaults) macOS
defaultsRecord<string, string | boolean | number> - 一个 (key: value) 用户默认值的字典
将指定的默认值添加到应用程序的 NSUserDefaults。
systemPreferences.getUserDefault<Type extends keyof UserDefaultTypes>(key, type) macOS
keystringtypeType - 可以是string、boolean、integer、float、double、url、array或dictionary。
返回 UserDefaultTypes[Type] - NSUserDefaults 中 key 的值。
一些常用的 key 和 type 包括
AppleInterfaceStyle:stringAppleAquaColorVariant:integerAppleHighlightColor:stringAppleShowScrollBars:stringNSNavRecentPlaces:arrayNSPreferredWebServices:dictionaryNSUserDictionaryReplacementItems:array
systemPreferences.setUserDefault<Type extends keyof UserDefaultTypes>(key, type, value) macOS
keystringtypeType - 可以是string、boolean、integer、float、double、url、array或dictionary。valueUserDefaultTypes[Type]
设置 NSUserDefaults 中 key 的值。
请注意,type 应与 value 的实际类型匹配。如果它们不匹配,则会抛出异常。
一些常用的 key 和 type 包括
ApplePressAndHoldEnabled:boolean
systemPreferences.removeUserDefault(key) macOS
keystring
移除 NSUserDefaults 中的 key。这可用于恢复先前使用 setUserDefault 设置的 key 的默认值或全局值。
systemPreferences.getAccentColor()
返回 string - 用户当前的系统范围强调色偏好设置,以 RGBA 十六进制格式表示。
const color = systemPreferences.getAccentColor() // `"aabbccdd"`
const red = color.substr(0, 2) // "aa"
const green = color.substr(2, 2) // "bb"
const blue = color.substr(4, 2) // "cc"
const alpha = color.substr(6, 2) // "dd"
此 API 仅在 macOS 10.14 Mojave 或更高版本上可用。
systemPreferences.getColor(color) Windows macOS
color字符串 - 以下值之一- 在 Windows 上
3d-dark-shadow- 三维显示元素的暗阴影。3d-face- 三维显示元素的表面颜色和对话框背景。3d-highlight- 三维显示元素的突出颜色。3d-light- 三维显示元素的浅色。3d-shadow- 三维显示元素的阴影颜色。active-border- 活动窗口边框。active-caption- 活动窗口标题栏。指定启用渐变效果时活动窗口标题栏的颜色渐变左侧颜色。active-caption-gradient- 活动窗口标题栏的颜色渐变右侧颜色。app-workspace- 多文档界面 (MDI) 应用程序的背景颜色。button-text- 按钮上的文本。caption-text- 标题、大小框和滚动条箭头框中的文本。desktop- 桌面背景颜色。disabled-text- 灰色(禁用)文本。highlight- 控件中选定的项目。highlight-text- 控件中选定的项目文本。hotlight- 超链接或热跟踪项目的颜色。inactive-border- 非活动窗口边框。inactive-caption- 非活动窗口标题。指定启用渐变效果时非活动窗口标题栏的颜色渐变左侧颜色。inactive-caption-gradient- 非活动窗口标题栏的颜色渐变右侧颜色。inactive-caption-text- 非活动标题中的文本颜色。info-background- 工具提示控件的背景颜色。info-text- 工具提示控件的文本颜色。menu- 菜单背景。menu-highlight- 菜单显示为平面菜单时突出显示的菜单项的颜色。menubar- 菜单显示为平面菜单时的菜单栏背景颜色。menu-text- 菜单中的文本。scrollbar- 滚动条灰色区域。window- 窗口背景。window-frame- 窗口框架。window-text- 窗口中的文本。
- 在 macOS 上
control-background- 浏览器或表格等大型界面元素的背景。control- 控制器的表面。control-text- 未禁用的控件的文本。disabled-control-text- 已禁用的控件的文本。find-highlight- 查找指示器的颜色。grid- 界面元素(如表格)的网格线。header-text- 表格中表头单元格的文本。highlight- 屏幕上的虚拟光源。keyboard-focus-indicator- 使用键盘进行界面导航时,当前焦点控件周围出现的环。label- 包含主要内容的标签的文本。link- 指向其他内容的链接。placeholder-text- 控件或文本视图中的占位符字符串。quaternary-label- 重要性低于三级标签的标签文本,例如水印文本。scrubber-textured-background- Touch Bar 中滑块的背景。secondary-label- 重要性低于普通标签的标签文本,例如用于表示副标题或附加信息的标签。selected-content-background- 关键窗口或视图中选定内容的背景。selected-control- 选定控件的表面。selected-control-text- 选定控件的文本。selected-menu-item-text- 选定菜单的文本。selected-text-background- 选定文本的背景。selected-text- 选定文本。separator- 内容不同部分之间的分隔符。shadow- 屏幕上凸起物体投射的虚拟阴影。tertiary-label- 重要性低于二级标签的标签文本,例如用于表示禁用文本的标签。text-background- 文本背景。text- 文档中的文本。under-page-background- 文档内容背后的背景。unemphasized-selected-content-background- 非关键窗口或视图中的选定内容。unemphasized-selected-text-background- 非关键窗口或视图中选定文本的背景。unemphasized-selected-text- 非关键窗口或视图中选定文本。window-background- 窗口的背景。window-frame-text- 窗口标题栏区域中的文本。
- 在 Windows 上
返回 string - 系统颜色设置以 RGBA 十六进制形式 (#RRGGBBAA) 返回。请参阅 Windows 文档 和 macOS 文档 以获取更多详细信息。
以下颜色仅在 macOS 10.14 上可用:find-highlight、selected-content-background、separator、unemphasized-selected-content-background、unemphasized-selected-text-background 和 unemphasized-selected-text。
systemPreferences.getSystemColor(color) macOS
color字符串 - 以下值之一bluebrowngraygreenorangepinkpurpleredyellow
返回 string - 标准系统颜色,格式为 #RRGGBBAA。
返回几个标准系统颜色,这些颜色会自动适应活力和可访问性设置的变化,例如“增加对比度”和“降低透明度”。请参阅 Apple 文档 以获取更多详细信息。
systemPreferences.getEffectiveAppearance() macOS
返回 string - 可以是 dark、light 或 unknown。
获取当前应用于应用程序的 macOS 外观设置,映射到 NSApplication.effectiveAppearance
systemPreferences.canPromptTouchID() macOS
返回 boolean - 该设备是否具有使用 Touch ID 的能力。
systemPreferences.promptTouchID(reason) macOS
reasonstring - 请求 Touch ID 身份验证的原因
返回 Promise<void> - 如果用户已成功使用 Touch ID 进行身份验证,则解析。
const { systemPreferences } = require('electron')
systemPreferences.promptTouchID('To get consent for a Security-Gated Thing').then(success => {
console.log('You have successfully authenticated with Touch ID!')
}).catch(err => {
console.log(err)
})
此 API 本身不会保护您的用户数据;相反,它是一种允许您这样做的方法。原生应用程序需要在其 keychain 条目上设置 访问控制常量,例如 kSecAccessControlUserPresence,以便读取它会自动提示 Touch ID 生物识别同意。可以使用 node-keytar 来完成此操作,例如,可以将加密密钥与 node-keytar 一起存储,并且仅在 promptTouchID() 解析后才获取它。
systemPreferences.isTrustedAccessibilityClient(prompt) macOS
promptboolean - 如果当前进程不受信任,是否会通过提示告知用户。
返回 boolean - 如果当前进程是受信任的可访问性客户端,则返回 true;如果不是,则返回 false。
systemPreferences.getMediaAccessStatus(mediaType) Windows macOS
mediaTypestring - 可以是microphone、camera或screen。
返回 string - 可以是 not-determined、granted、denied、restricted 或 unknown。
在 macOS 10.13 High Sierra 上不需要此用户同意,因此此方法将始终返回 granted。macOS 10.14 Mojave 或更高版本需要 microphone 和 camera 访问权限的同意。macOS 10.15 Catalina 或更高版本需要 screen 访问权限的同意。
Windows 10 具有控制所有 win32 应用程序的 microphone 和 camera 访问权限的全局设置。它将始终为 screen 和旧版本 Windows 的所有媒体类型返回 granted。
systemPreferences.askForMediaAccess(mediaType) macOS
mediaTypestring - 请求的媒体类型;可以是microphone、camera。
返回 Promise<boolean> - 如果授予了同意,则 promise 解析为 true;如果被拒绝,则解析为 false。如果传递了无效的 mediaType,则 promise 将被拒绝。如果访问请求被拒绝,并且随后通过“系统偏好设置”窗格更改,则需要重新启动应用程序才能使新的权限生效。如果已经请求了访问权限并被拒绝,则必须通过偏好窗格进行更改;不会弹出警报,并且 promise 将使用现有的访问状态解析。
重要提示: 为了正确利用此 API,您 必须设置 应用程序的 Info.plist 文件中的 NSMicrophoneUsageDescription 和 NSCameraUsageDescription 字符串。这些键的值将用于填充权限对话框,以便用户能够正确了解权限请求的目的。有关如何在 Electron 上下文设置这些信息,请参阅 Electron 应用程序分发。
在 macOS 10.14 Mojave 之前不需要此用户同意,因此如果您的系统运行的是 10.13 High Sierra,此方法将始终返回 true。
systemPreferences.getAnimationSettings()
返回 Object
shouldRenderRichAnimationboolean - 如果应渲染丰富的动画,则返回 true。查看会话类型(例如远程桌面)和可访问性设置,以提供重型动画的指导。scrollAnimationsEnabledBySystemboolean - 根据平台确定是否应启用滚动动画(例如,由主页/结束键产生)。prefersReducedMotionboolean - 根据平台 API 确定用户是否希望减少运动。
返回一个包含系统动画设置的对象。
属性
systemPreferences.accessibilityDisplayShouldReduceTransparency macOS 已弃用
一个 boolean 属性,用于确定应用程序是否应避免使用半透明背景。它映射到 NSWorkspace.accessibilityDisplayShouldReduceTransparency
已弃用: 使用新的 nativeTheme.prefersReducedTransparency API。
systemPreferences.effectiveAppearance macOS 只读
一个 string 属性,可以是 dark、light 或 unknown。
返回当前应用于应用程序的 macOS 外观设置,映射到 NSApplication.effectiveAppearance