electron/docs-translations/zh-CN/api/system-preferences.md
2017-02-12 22:38:24 +08:00

7.4 KiB
Raw Blame History

systemPreferences

获取系统偏好设置。

可使用的进程: 主进程

const {systemPreferences} = require('electron')
console.log(systemPreferences.isDarkMode())

事件

systemPreferences 对象会触发以下事件:

Event: 'accent-color-changed' Windows

返回:

  • event Event
  • newColor String - 用户给系统颜色设置的新的 RGBA 色值。

Event: 'color-changed' Windows

返回:

  • event Event

Event: 'inverted-color-scheme-changed' Windows

返回:

  • event Event
  • invertedColorScheme Boolean - 如果一个反色的配色方案正在被使用,比如一个高对比度的主题,则返回 true ,否则返回 false

方法

systemPreferences.isDarkMode() macOS

返回 Boolean - 系统是否处于深色模式。

systemPreferences.isSwipeTrackingFromScrollEventsEnabled() macOS

返回 Boolean - 是否开启页面间滑动功能。

systemPreferences.postNotification(event, userInfo) macOS

  • event String
  • userInfo Object

在 macOS 上使用原生系统通知来发布 eventuserInfo 是包含了用户向通知发送的信息字典的一个对象。

systemPreferences.postLocalNotification(event, userInfo) macOS

  • event String
  • userInfo Object

在 macOS 上使用原生系统通知来发布 eventuserInfo 是包含了用户向通知发送的信息字典的一个对象。

systemPreferences.subscribeNotification(event, callback) macOS

  • event String
  • callback Function
    • event String
    • userInfo Object

在 macOS 上订阅一个原生消息。当相关 event 发生, callback 将会被 callback(event, userInfo) 调用。userInfo 是包含了用户向通知发送的信息字典的一个对象。

订阅者的 id 将会被返回,它能够用于取消订阅相关 event

这个API在底层上订阅于 NSDistributedNotificationCenter event 的一些实例值如下:

  • AppleInterfaceThemeChangedNotification
  • AppleAquaColorVariantChanged
  • AppleColorPreferencesChangedNotification
  • AppleShowScrollBarsSettingChanged

systemPreferences.unsubscribeNotification(id) macOS

  • id Integer

移除当前 id 下的订阅。

systemPreferences.subscribeLocalNotification(event, callback) macOS

  • event String
  • callback Function
    • event String
    • userInfo Object

大体上如同 subscribeNotification ,但默认使用本地 subscribeNotification 。一些事件必须使用它,比如 NSUserDefaultsDidChangeNotification

systemPreferences.unsubscribeLocalNotification(id) macOS

  • id Integer

大体上如同 unsubscribeNotification 但是是从 NSNotificationCenter 中移除订阅者。

systemPreferences.getUserDefault(key, type) macOS

  • key String
  • type String - Can be string, boolean, integer, float, double, url, array, dictionary

获取系统偏好中相应的 key 的值。

这个 API 在 macOS 系统中使用的是 NSUserDefaults 。以下是一些热门的 keytype

  • AppleInterfaceStyle: string
  • AppleAquaColorVariant: integer
  • AppleHighlightColor: string
  • AppleShowScrollBars: string
  • NSNavRecentPlaces: array
  • NSPreferredWebServices: dictionary
  • NSUserDictionaryReplacementItems: array

systemPreferences.setUserDefault(key, type, value) macOS

  • key String
  • type String - 详见 [getUserDefault][#systempreferencesgetuserdefaultkey-type-macos]
  • value String

设置系统偏好中相应的 key 的值。

需要注意的是 type 需要与实际的类型的 value 对应。不然会抛出一个异常。

这个 API 在 macOS 系统中使用的是 NSUserDefaults 。以下是一些热门的 keytype

  • ApplePressAndHoldEnabled: boolean

systemPreferences.isAeroGlassEnabled() Windows

如果 DWM composition (毛玻璃效果)开启则会返回 true 否则返回 false

以下是一个实例去使用它来确定是否应该创建一个透明的窗口(透明的窗口在 DWM composition 禁止的情况下无法正确运行):

const {BrowserWindow, systemPreferences} = require('electron')
let browserOptions = {width: 1000, height: 800}

// 如果平台支持的话便新建一个透明的窗口。
if (process.platform !== 'win32' || systemPreferences.isAeroGlassEnabled()) {
  browserOptions.transparent = true
  browserOptions.frame = false
}

// 创建窗口。
let win = new BrowserWindow(browserOptions)

// 区分环境进行加载。
if (browserOptions.transparent) {
  win.loadURL(`file://${__dirname}/index.html`)
} else {
  // No transparency, so we load a fallback that uses basic styles.
  win.loadURL(`file://${__dirname}/fallback.html`)
}

systemPreferences.getAccentColor() Windows

返回 String - 用户当前系统颜色偏好的16进制 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"

systemPreferences.getColor(color) Windows

  • color String - 接下来的一个值:
    • 3d-dark-shadow - 3D 元素的暗部的色值。
    • 3d-face - 3D 肤色,以及对话框背景。
    • 3d-highlight - 高亮的3D元素。
    • 3d-light - 3D 元素亮部。
    • 3d-shadow - 3D 元素的阴影。
    • 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 - 窗口内文本。

返回 String - 系统设置色值的16进制形式#ABCDEF)。 详见 Windows docs 获取更多细节。

systemPreferences.isInvertedColorScheme() Windows

返回 Boolean - 如果一个反色的配色方案正在被使用,比如一个高对比度的主题,则返回 true ,否则返回 false