systemPreferences
获取系统偏好设置。
const { systemPreferences } = require('electron')
console.log(systemPreferences.isAeroGlassEnabled())
事件
systemPreferences
对象发出以下事件
事件:'accent-color-changed' Windows
返回值
event
事件newColor
string - 用户分配为其系统强调色的新 RGBA 颜色。
事件:'color-changed' Windows
返回值
event
事件
方法
systemPreferences.isSwipeTrackingFromScrollEventsEnabled()
macOS
返回值 boolean
- 页面之间滑动设置是否开启。
systemPreferences.postNotification(event, userInfo[, deliverImmediately])
macOS
event
stringuserInfo
Record<string, any>deliverImmediately
boolean (可选) -true
表示即使订阅的应用程序处于非活动状态,也要立即发布通知。
将 event
发布为 macOS 的本地通知。userInfo
是一个对象,包含与通知一起发送的用户信息字典。
systemPreferences.postLocalNotification(event, userInfo)
macOS
event
stringuserInfo
Record<string, any>
将 event
发布为 macOS 的本地通知。userInfo
是一个对象,包含与通知一起发送的用户信息字典。
systemPreferences.postWorkspaceNotification(event, userInfo)
macOS
event
stringuserInfo
Record<string, any>
将 event
发布为 macOS 的本地通知。userInfo
是一个对象,包含与通知一起发送的用户信息字典。
systemPreferences.subscribeNotification(event, callback)
macOS
event
string | nullcallback
Functionevent
stringuserInfo
Record<string, unknown>object
string
返回值 number
- 此订阅的 ID
订阅 macOS 的本地通知,当相应的 event
发生时,callback
将使用 callback(event, userInfo)
调用。userInfo
是一个对象,包含与通知一起发送的用户信息字典。object
是通知的发送方,目前仅支持 NSString
值。
将返回订阅者的 id
,可用于取消订阅 event
。
在幕后,此 API 订阅 NSDistributedNotificationCenter
,event
的示例值包括
AppleInterfaceThemeChangedNotification
AppleAquaColorVariantChanged
AppleColorPreferencesChangedNotification
AppleShowScrollBarsSettingChanged
如果 event
为 null,则 NSDistributedNotificationCenter
不会将其用作传递给观察者的标准。有关更多信息,请参阅 文档。
systemPreferences.subscribeLocalNotification(event, callback)
macOS
event
string | nullcallback
Functionevent
stringuserInfo
Record<string, unknown>object
string
返回值 number
- 此订阅的 ID
与 subscribeNotification
相同,但使用 NSNotificationCenter
用于本地默认值。对于 NSUserDefaultsDidChangeNotification
等事件,这是必需的。
如果 event
为 null,则 NSNotificationCenter
不会将其用作传递给观察者的标准。有关更多信息,请参阅 文档。
systemPreferences.subscribeWorkspaceNotification(event, callback)
macOS
event
string | nullcallback
Functionevent
stringuserInfo
Record<string, unknown>object
string
返回值 number
- 此订阅的 ID
与 subscribeNotification
相同,但使用 NSWorkspace.sharedWorkspace.notificationCenter
。对于 NSWorkspaceDidActivateApplicationNotification
等事件,这是必需的。
如果 event
为 null,则 NSWorkspaceNotificationCenter
不会将其用作传递给观察者的标准。有关更多信息,请参阅 文档。
systemPreferences.unsubscribeNotification(id)
macOS
id
Integer
删除具有 id
的订阅者。
systemPreferences.unsubscribeLocalNotification(id)
macOS
id
Integer
与 unsubscribeNotification
相同,但从 NSNotificationCenter
删除订阅者。
systemPreferences.unsubscribeWorkspaceNotification(id)
macOS
id
Integer
与 unsubscribeNotification
相同,但从 NSWorkspace.sharedWorkspace.notificationCenter
删除订阅者。
systemPreferences.registerDefaults(defaults)
macOS
defaults
Record<string, string | boolean | number> - (key: value
) 用户默认值的字典
将指定的默认值添加到应用程序的 NSUserDefaults
。
systemPreferences.getUserDefault<Type extends keyof UserDefaultTypes>(key, type)
macOS
key
stringtype
Type - 可以是string
、boolean
、integer
、float
、double
、url
、array
或dictionary
。
返回值 UserDefaultTypes[Type] - NSUserDefaults
中 key
的值。
一些流行的 key
和 type
是
AppleInterfaceStyle
:string
AppleAquaColorVariant
:integer
AppleHighlightColor
:string
AppleShowScrollBars
:string
NSNavRecentPlaces
:array
NSPreferredWebServices
:dictionary
NSUserDictionaryReplacementItems
:array
systemPreferences.setUserDefault<Type extends keyof UserDefaultTypes>(key, type, value)
macOS
key
stringtype
Type - 可以是string
、boolean
、integer
、float
、double
、url
、array
或dictionary
。value
UserDefaultTypes[Type]
设置 NSUserDefaults
中 key
的值。
注意,type
应该与 value
的实际类型匹配。如果不匹配,将抛出异常。
一些流行的 key
和 type
是
ApplePressAndHoldEnabled
:boolean
systemPreferences.removeUserDefault(key)
macOS
key
string
从 NSUserDefaults
中删除 key
。这可用于恢复之前使用 setUserDefault
设置的 key
的默认值或全局值。
systemPreferences.isAeroGlassEnabled()
Windows
返回值 boolean
- 如果 DWM 复合(Aero Glass)已启用,则为 true
,否则为 false
。
使用它的一个示例,用于确定是否应创建透明窗口(当 DWM 复合禁用时,透明窗口将无法正常工作)
const { BrowserWindow, systemPreferences } = require('electron')
const browserOptions = { width: 1000, height: 800 }
// Make the window transparent only if the platform supports it.
if (process.platform !== 'win32' || systemPreferences.isAeroGlassEnabled()) {
browserOptions.transparent = true
browserOptions.frame = false
}
// Create the window.
const win = new BrowserWindow(browserOptions)
// Navigate.
if (browserOptions.transparent) {
win.loadFile('index.html')
} else {
// No transparency, so we load a fallback that uses basic styles.
win.loadFile('fallback.html')
}
systemPreferences.getAccentColor()
Windows macOS
返回 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
string - 以下值之一- 在 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
- 触控栏中滑块的背景。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
string - 以下值之一蓝色
棕色
灰色
绿色
橙色
粉色
紫色
红色
黄色
返回 string
- 格式化为 #RRGGBBAA
的标准系统颜色。
返回几种标准系统颜色之一,这些颜色会自动适应亮度和辅助功能设置(如“增加对比度”和“减少透明度”)的变化。有关更多详细信息,请参阅 Apple 文档。
systemPreferences.getEffectiveAppearance()
macOS
返回 string
- 可以是 dark
、light
或 unknown
。
获取当前应用于您的应用程序的 macOS 外观设置,映射到 NSApplication.effectiveAppearance
systemPreferences.canPromptTouchID()
macOS
返回 boolean
- 此设备是否能够使用 Touch ID。
systemPreferences.promptTouchID(reason)
macOS
reason
string - 您请求 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 本身不会保护您的用户数据;相反,它是一种机制,允许您这样做。本机应用程序需要在他们的密钥链条目上设置 访问控制常量(如 kSecAccessControlUserPresence
),这样读取它将自动提示 Touch ID 生物识别同意。这可以使用 node-keytar
完成,这样,您将使用 node-keytar
存储加密密钥,并且仅在 promptTouchID()
解析时才获取它。
systemPreferences.isTrustedAccessibilityClient(prompt)
macOS
prompt
boolean - 如果当前进程不受信任,是否会通过提示通知用户。
返回 boolean
- 如果当前进程是受信任的辅助功能客户端,则返回 true
;否则返回 false
。
systemPreferences.getMediaAccessStatus(mediaType)
Windows macOS
mediaType
string - 可以是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
访问权限。它始终返回 granted
,用于 screen
以及 Windows 早期版本上的所有媒体类型。
systemPreferences.askForMediaAccess(mediaType)
macOS
mediaType
string - 请求的媒体类型;可以是microphone
、camera
。
返回 Promise<boolean>
- 如果同意已授予,则解析为 true
的 promise;如果拒绝,则解析为 false
。如果传递了无效的 mediaType
,则 promise 将被拒绝。如果访问请求被拒绝,后来又通过“系统偏好设置”窗格进行了更改,则需要重新启动应用程序才能使新的权限生效。如果访问请求已被请求并拒绝,则*必须*通过偏好设置窗格进行更改;不会弹出警报,promise 将使用现有的访问状态进行解析。
重要提示:为了正确利用此 API,您必须在您的应用程序的 Info.plist
文件中设置 NSMicrophoneUsageDescription
和 NSCameraUsageDescription
字符串。这些键的值将用于填充权限对话框,以便用户能够正确了解权限请求的目的。有关如何在 Electron 环境中设置这些值的信息,请参阅Electron 应用程序分发。
在 macOS 10.14 Mojave 之前,此用户同意不需要,因此如果您的系统运行的是 10.13 High Sierra,此方法将始终返回 true
。
systemPreferences.getAnimationSettings()
返回 Object
shouldRenderRichAnimation
布尔值 - 如果应渲染丰富的动画,则返回 true。查看会话类型(例如远程桌面)和辅助功能设置,以提供有关繁重动画的指导。scrollAnimationsEnabledBySystem
布尔值 - 在每个平台的基础上确定是否应启用滚动动画(例如由 Home/End 键产生的滚动动画)。prefersReducedMotion
布尔值 - 确定用户是否希望基于平台 API 减少运动。
返回一个包含系统动画设置的对象。
属性
systemPreferences.accessibilityDisplayShouldReduceTransparency
macOS 已弃用
一个 boolean
属性,它确定应用程序是否避免使用半透明背景。这映射到NSWorkspace.accessibilityDisplayShouldReduceTransparency
已弃用:使用新的nativeTheme.prefersReducedTransparency
API。
systemPreferences.effectiveAppearance
macOS 只读
一个 string
属性,可以是 dark
、light
或 unknown
。
返回当前应用于您应用程序的 macOS 外观设置,映射到NSApplication.effectiveAppearance