systemPreferences
获取系统偏好设置。
可使用的进程: 主进程
const {systemPreferences} = require('electron')
console.log(systemPreferences.isDarkMode())
事件
systemPreferences
对象会触发以下事件:
Event: 'accent-color-changed' Windows
返回:
event
EventnewColor
String - 用户给系统颜色设置的新的 RGBA 色值。
Event: 'color-changed' Windows
返回:
event
Event
Event: 'inverted-color-scheme-changed' Windows
返回:
event
EventinvertedColorScheme
Boolean - 如果一个反色的配色方案正在被使用,比如一个高对比度的主题,则返回true
,否则返回false
。
方法
systemPreferences.isDarkMode()
macOS
返回 Boolean
- 系统是否处于深色模式。
systemPreferences.isSwipeTrackingFromScrollEventsEnabled()
macOS
返回 Boolean
- 是否开启页面间滑动功能。
systemPreferences.postNotification(event, userInfo)
macOS
event
StringuserInfo
Object
在 macOS 上使用原生系统通知来发布 event
。userInfo
是包含了用户向通知发送的信息字典的一个对象。
systemPreferences.postLocalNotification(event, userInfo)
macOS
event
StringuserInfo
Object
在 macOS 上使用原生系统通知来发布 event
。userInfo
是包含了用户向通知发送的信息字典的一个对象。
systemPreferences.subscribeNotification(event, callback)
macOS
event
Stringcallback
Functionevent
StringuserInfo
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
Stringcallback
Functionevent
StringuserInfo
Object
大体上如同 subscribeNotification
,但默认使用本地 subscribeNotification
。一些事件必须使用它,比如 NSUserDefaultsDidChangeNotification
。
systemPreferences.unsubscribeLocalNotification(id)
macOS
id
Integer
大体上如同 unsubscribeNotification
, 但是是从 NSNotificationCenter
中移除订阅者。
systemPreferences.getUserDefault(key, type)
macOS
key
Stringtype
String - Can bestring
,boolean
,integer
,float
,double
,url
,array
,dictionary
获取系统偏好中相应的 key
的值。
这个 API 在 macOS 系统中使用的是 NSUserDefaults
。以下是一些热门的 key
和 type
:
AppleInterfaceStyle
:string
AppleAquaColorVariant
:integer
AppleHighlightColor
:string
AppleShowScrollBars
:string
NSNavRecentPlaces
:array
NSPreferredWebServices
:dictionary
NSUserDictionaryReplacementItems
:array
systemPreferences.setUserDefault(key, type, value)
macOS
key
Stringtype
String - 详见 [getUserDefault
][#systempreferencesgetuserdefaultkey-type-macos]value
String
设置系统偏好中相应的 key
的值。
需要注意的是 type
需要与实际的类型的 value
对应。不然会抛出一个异常。
这个 API 在 macOS 系统中使用的是 NSUserDefaults
。以下是一些热门的 key
和 type
:
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
。