跳至主要内容

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 string
  • userInfo Record<string, any>
  • deliverImmediately boolean (可选) - true 表示即使订阅的应用程序处于非活动状态,也要立即发布通知。

event 发布为 macOS 的本地通知。userInfo 是一个对象,包含与通知一起发送的用户信息字典。

systemPreferences.postLocalNotification(event, userInfo) macOS

  • event string
  • userInfo Record<string, any>

event 发布为 macOS 的本地通知。userInfo 是一个对象,包含与通知一起发送的用户信息字典。

systemPreferences.postWorkspaceNotification(event, userInfo) macOS

  • event string
  • userInfo Record<string, any>

event 发布为 macOS 的本地通知。userInfo 是一个对象,包含与通知一起发送的用户信息字典。

systemPreferences.subscribeNotification(event, callback) macOS

  • event string | null
  • callback Function
    • event string
    • userInfo Record<string, unknown>
    • object string

返回值 number - 此订阅的 ID

订阅 macOS 的本地通知,当相应的 event 发生时,callback 将使用 callback(event, userInfo) 调用。userInfo 是一个对象,包含与通知一起发送的用户信息字典。object 是通知的发送方,目前仅支持 NSString 值。

将返回订阅者的 id,可用于取消订阅 event

在幕后,此 API 订阅 NSDistributedNotificationCenterevent 的示例值包括

  • AppleInterfaceThemeChangedNotification
  • AppleAquaColorVariantChanged
  • AppleColorPreferencesChangedNotification
  • AppleShowScrollBarsSettingChanged

如果 event 为 null,则 NSDistributedNotificationCenter 不会将其用作传递给观察者的标准。有关更多信息,请参阅 文档

systemPreferences.subscribeLocalNotification(event, callback) macOS

  • event string | null
  • callback Function
    • event string
    • userInfo Record<string, unknown>
    • object string

返回值 number - 此订阅的 ID

subscribeNotification 相同,但使用 NSNotificationCenter 用于本地默认值。对于 NSUserDefaultsDidChangeNotification 等事件,这是必需的。

如果 event 为 null,则 NSNotificationCenter 不会将其用作传递给观察者的标准。有关更多信息,请参阅 文档

systemPreferences.subscribeWorkspaceNotification(event, callback) macOS

  • event string | null
  • callback Function
    • event string
    • userInfo 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 string
  • type Type - 可以是 stringbooleanintegerfloatdoubleurlarraydictionary

返回值 UserDefaultTypes[Type] - NSUserDefaultskey 的值。

一些流行的 keytype

  • 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 string
  • type Type - 可以是 stringbooleanintegerfloatdoubleurlarraydictionary
  • value UserDefaultTypes[Type]

设置 NSUserDefaultskey 的值。

注意,type 应该与 value 的实际类型匹配。如果不匹配,将抛出异常。

一些流行的 keytype

  • 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 - 窗口标题栏区域中的文本。

返回 string - 系统颜色设置,格式为 RGBA 十六进制 (#RRGGBBAA)。有关更多详细信息,请参阅 Windows 文档macOS 文档

以下颜色仅适用于 macOS 10.14:find-highlightselected-content-backgroundseparatorunemphasized-selected-content-backgroundunemphasized-selected-text-backgroundunemphasized-selected-text

systemPreferences.getSystemColor(color) macOS

  • color string - 以下值之一
    • 蓝色
    • 棕色
    • 灰色
    • 绿色
    • 橙色
    • 粉色
    • 紫色
    • 红色
    • 黄色

返回 string - 格式化为 #RRGGBBAA 的标准系统颜色。

返回几种标准系统颜色之一,这些颜色会自动适应亮度和辅助功能设置(如“增加对比度”和“减少透明度”)的变化。有关更多详细信息,请参阅 Apple 文档

systemPreferences.getEffectiveAppearance() macOS

返回 string - 可以是 darklightunknown

获取当前应用于您的应用程序的 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 - 可以是 microphonecamerascreen

返回 string - 可以是 not-determinedgranteddeniedrestrictedunknown

此用户同意在 macOS 10.13 High Sierra 上不需要,因此此方法始终返回 granted。macOS 10.14 Mojave 或更高版本需要对 microphonecamera 访问进行同意。macOS 10.15 Catalina 或更高版本需要对 screen 访问进行同意。

Windows 10 具有一个全局设置,用于控制所有 win32 应用程序的 microphonecamera 访问权限。它始终返回 granted,用于 screen 以及 Windows 早期版本上的所有媒体类型。

systemPreferences.askForMediaAccess(mediaType) macOS

  • mediaType string - 请求的媒体类型;可以是 microphonecamera

返回 Promise<boolean> - 如果同意已授予,则解析为 true 的 promise;如果拒绝,则解析为 false。如果传递了无效的 mediaType,则 promise 将被拒绝。如果访问请求被拒绝,后来又通过“系统偏好设置”窗格进行了更改,则需要重新启动应用程序才能使新的权限生效。如果访问请求已被请求并拒绝,则*必须*通过偏好设置窗格进行更改;不会弹出警报,promise 将使用现有的访问状态进行解析。

重要提示:为了正确利用此 API,您必须在您的应用程序的 Info.plist 文件中设置 NSMicrophoneUsageDescriptionNSCameraUsageDescription 字符串。这些键的值将用于填充权限对话框,以便用户能够正确了解权限请求的目的。有关如何在 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 属性,可以是 darklightunknown

返回当前应用于您应用程序的 macOS 外观设置,映射到NSApplication.effectiveAppearance