2016-04-25 06:36:38 +00:00
# systemPreferences
> Get system preferences.
2016-11-23 19:20:56 +00:00
Process: [Main ](../glossary.md#main-process )
2016-11-03 17:26:00 +00:00
2016-06-19 15:53:34 +00:00
```javascript
2018-09-13 16:10:51 +00:00
const { systemPreferences } = require('electron')
2016-07-26 01:39:25 +00:00
console.log(systemPreferences.isDarkMode())
2016-06-19 15:53:34 +00:00
```
2016-09-16 16:08:41 +00:00
## Events
The `systemPreferences` object emits the following events:
### Event: 'accent-color-changed' _Windows_
Returns:
* `event` Event
2021-11-16 04:13:18 +00:00
* `newColor` string - The new RGBA color the user assigned to be their system
2016-10-07 16:55:50 +00:00
accent color.
2016-09-16 16:08:41 +00:00
2016-10-11 16:35:14 +00:00
### Event: 'color-changed' _Windows_
Returns:
* `event` Event
2019-08-14 20:42:55 +00:00
### Event: 'inverted-color-scheme-changed' _Windows_ _Deprecated_
2016-10-07 16:55:50 +00:00
Returns:
* `event` Event
2021-11-16 04:13:18 +00:00
* `invertedColorScheme` boolean - `true` if an inverted color scheme (a high contrast color scheme with light text and dark backgrounds) is being used, `false` otherwise.
2018-10-31 14:22:18 +00:00
2019-08-14 20:42:55 +00:00
**Deprecated:** Should use the new [`updated` ](native-theme.md#event-updated ) event on the `nativeTheme` module.
### Event: 'high-contrast-color-scheme-changed' _Windows_ _Deprecated_
2018-10-31 14:22:18 +00:00
Returns:
* `event` Event
2021-11-16 04:13:18 +00:00
* `highContrastColorScheme` boolean - `true` if a high contrast theme is being used, `false` otherwise.
2016-09-16 16:08:41 +00:00
2019-08-14 20:42:55 +00:00
**Deprecated:** Should use the new [`updated` ](native-theme.md#event-updated ) event on the `nativeTheme` module.
2016-04-25 06:36:38 +00:00
## Methods
2019-08-14 20:42:55 +00:00
### `systemPreferences.isDarkMode()` _macOS_ _Windows_ _Deprecated_
2016-04-25 06:36:38 +00:00
2021-11-16 04:13:18 +00:00
Returns `boolean` - Whether the system is in Dark Mode.
2016-04-25 06:36:38 +00:00
2019-08-14 20:42:55 +00:00
**Deprecated:** Should use the new [`nativeTheme.shouldUseDarkColors` ](native-theme.md#nativethemeshouldusedarkcolors-readonly ) API.
2016-08-03 02:27:56 +00:00
### `systemPreferences.isSwipeTrackingFromScrollEventsEnabled()` _macOS_
2021-11-16 04:13:18 +00:00
Returns `boolean` - Whether the Swipe between pages setting is on.
2016-08-03 02:27:56 +00:00
2018-12-14 21:46:46 +00:00
### `systemPreferences.postNotification(event, userInfo[, deliverImmediately])` _macOS_
2016-08-05 21:02:59 +00:00
2021-11-16 04:13:18 +00:00
* `event` string
* `userInfo` Record< string , any >
* `deliverImmediately` boolean (optional) - `true` to post notifications immediately even when the subscribing app is inactive.
2016-08-05 21:02:59 +00:00
Posts `event` as native notifications of macOS. The `userInfo` is an Object
that contains the user information dictionary sent along with the notification.
### `systemPreferences.postLocalNotification(event, userInfo)` _macOS_
2021-11-16 04:13:18 +00:00
* `event` string
* `userInfo` Record< string , any >
2016-08-05 21:02:59 +00:00
Posts `event` as native notifications of macOS. The `userInfo` is an Object
that contains the user information dictionary sent along with the notification.
2018-03-22 09:41:03 +00:00
### `systemPreferences.postWorkspaceNotification(event, userInfo)` _macOS_
2021-11-16 04:13:18 +00:00
* `event` string
* `userInfo` Record< string , any >
2018-03-22 09:41:03 +00:00
Posts `event` as native notifications of macOS. The `userInfo` is an Object
that contains the user information dictionary sent along with the notification.
2016-06-18 13:26:26 +00:00
### `systemPreferences.subscribeNotification(event, callback)` _macOS_
2016-04-25 06:36:38 +00:00
2022-04-13 20:02:33 +00:00
* `event` string | null
2016-04-25 06:36:38 +00:00
* `callback` Function
2021-11-16 04:13:18 +00:00
* `event` string
* `userInfo` Record< string , unknown >
* `object` string
2019-03-20 20:12:47 +00:00
2021-11-16 04:13:18 +00:00
Returns `number` - The ID of this subscription
2016-04-25 06:36:38 +00:00
2016-06-18 13:26:26 +00:00
Subscribes to native notifications of macOS, `callback` will be called with
2016-05-18 05:40:19 +00:00
`callback(event, userInfo)` when the corresponding `event` happens. The
`userInfo` is an Object that contains the user information dictionary sent
2019-07-11 17:06:31 +00:00
along with the notification. The `object` is the sender of the notification,
and only supports `NSString` values for now.
2016-05-18 05:40:19 +00:00
The `id` of the subscriber is returned, which can be used to unsubscribe the
`event` .
2016-04-25 06:36:38 +00:00
Under the hood this API subscribes to `NSDistributedNotificationCenter` ,
2016-05-18 05:40:19 +00:00
example values of `event` are:
2016-04-25 06:36:38 +00:00
* `AppleInterfaceThemeChangedNotification`
* `AppleAquaColorVariantChanged`
* `AppleColorPreferencesChangedNotification`
* `AppleShowScrollBarsSettingChanged`
2022-04-13 20:02:33 +00:00
If `event` is null, the `NSDistributedNotificationCenter` doesn’ t use it as criteria for delivery to the observer. See [docs ](https://developer.apple.com/documentation/foundation/nsnotificationcenter/1411723-addobserverforname?language=objc ) for more information.
2016-06-21 00:48:42 +00:00
### `systemPreferences.subscribeLocalNotification(event, callback)` _macOS_
2022-04-13 20:02:33 +00:00
* `event` string | null
2016-08-25 17:52:19 +00:00
* `callback` Function
2021-11-16 04:13:18 +00:00
* `event` string
* `userInfo` Record< string , unknown >
* `object` string
2019-03-20 20:12:47 +00:00
2021-11-16 04:13:18 +00:00
Returns `number` - The ID of this subscription
2016-08-25 17:52:19 +00:00
2016-06-21 00:48:42 +00:00
Same as `subscribeNotification` , but uses `NSNotificationCenter` for local defaults.
2017-11-29 10:38:35 +00:00
This is necessary for events such as `NSUserDefaultsDidChangeNotification` .
2016-06-21 00:48:42 +00:00
2022-04-13 20:02:33 +00:00
If `event` is null, the `NSNotificationCenter` doesn’ t use it as criteria for delivery to the observer. See [docs ](https://developer.apple.com/documentation/foundation/nsnotificationcenter/1411723-addobserverforname?language=objc ) for more information.
2018-03-22 09:41:03 +00:00
### `systemPreferences.subscribeWorkspaceNotification(event, callback)` _macOS_
2022-04-13 20:02:33 +00:00
* `event` string | null
2018-03-22 09:41:03 +00:00
* `callback` Function
2021-11-16 04:13:18 +00:00
* `event` string
* `userInfo` Record< string , unknown >
* `object` string
2018-03-22 09:41:03 +00:00
2021-11-16 04:13:18 +00:00
Returns `number` - The ID of this subscription
2021-04-11 21:02:58 +00:00
2018-03-22 09:41:03 +00:00
Same as `subscribeNotification` , but uses `NSWorkspace.sharedWorkspace.notificationCenter` .
This is necessary for events such as `NSWorkspaceDidActivateApplicationNotification` .
2022-04-13 20:02:33 +00:00
If `event` is null, the `NSWorkspaceNotificationCenter` doesn’ t use it as criteria for delivery to the observer. See [docs ](https://developer.apple.com/documentation/foundation/nsnotificationcenter/1411723-addobserverforname?language=objc ) for more information.
2018-03-22 09:41:03 +00:00
### `systemPreferences.unsubscribeNotification(id)` _macOS_
2019-06-10 16:34:21 +00:00
* `id` Integer
2018-03-22 09:41:03 +00:00
Removes the subscriber with `id` .
2016-06-21 00:48:42 +00:00
### `systemPreferences.unsubscribeLocalNotification(id)` _macOS_
2019-06-10 16:34:21 +00:00
* `id` Integer
2016-08-25 17:52:19 +00:00
2016-06-21 00:48:42 +00:00
Same as `unsubscribeNotification` , but removes the subscriber from `NSNotificationCenter` .
2018-03-22 09:41:03 +00:00
### `systemPreferences.unsubscribeWorkspaceNotification(id)` _macOS_
2019-06-10 16:34:21 +00:00
* `id` Integer
2018-03-22 09:41:03 +00:00
Same as `unsubscribeNotification` , but removes the subscriber from `NSWorkspace.sharedWorkspace.notificationCenter` .
2019-03-20 20:12:47 +00:00
### `systemPreferences.registerDefaults(defaults)` _macOS_
2017-12-12 18:08:09 +00:00
2021-11-16 04:13:18 +00:00
* `defaults` Record< string , string | boolean | number > - a dictionary of (`key: value`) user defaults
2017-12-12 18:08:09 +00:00
Add the specified defaults to your application's `NSUserDefaults` .
2021-04-19 18:44:58 +00:00
### `systemPreferences.getUserDefault<Type extends keyof UserDefaultTypes>(key, type)` _macOS_
2016-04-25 06:36:38 +00:00
2021-11-16 04:13:18 +00:00
* `key` string
2021-04-19 18:44:58 +00:00
* `type` Type - Can be `string` , `boolean` , `integer` , `float` , `double` ,
2017-11-29 10:38:35 +00:00
`url` , `array` or `dictionary` .
2016-04-25 06:36:38 +00:00
2021-04-19 18:44:58 +00:00
Returns [`UserDefaultTypes[Type]`](structures/user-default-types.md) - The value of `key` in `NSUserDefaults` .
2016-04-25 06:36:38 +00:00
2017-10-10 19:55:15 +00:00
Some popular `key` and `type` s are:
2016-11-28 23:08:22 +00:00
2017-11-29 10:58:24 +00:00
* `AppleInterfaceStyle` : `string`
* `AppleAquaColorVariant` : `integer`
* `AppleHighlightColor` : `string`
* `AppleShowScrollBars` : `string`
* `NSNavRecentPlaces` : `array`
* `NSPreferredWebServices` : `dictionary`
* `NSUserDictionaryReplacementItems` : `array`
2016-11-28 23:08:22 +00:00
2022-03-29 21:47:06 +00:00
### `systemPreferences.setUserDefault<Type extends keyof UserDefaultTypes>(key, type, value)` _macOS_
2016-11-28 23:08:22 +00:00
2021-11-16 04:13:18 +00:00
* `key` string
2022-03-29 21:47:06 +00:00
* `type` Type - Can be `string` , `boolean` , `integer` , `float` , `double` , `url` , `array` or `dictionary` .
2023-01-16 09:22:49 +00:00
* `value` UserDefaultTypes\[Type]
2016-11-28 23:08:22 +00:00
2017-10-10 19:55:15 +00:00
Set the value of `key` in `NSUserDefaults` .
2016-11-28 23:08:22 +00:00
Note that `type` should match actual type of `value` . An exception is thrown
if they don't.
2017-10-10 19:55:15 +00:00
Some popular `key` and `type` s are:
2016-11-28 23:08:22 +00:00
2017-11-29 10:58:24 +00:00
* `ApplePressAndHoldEnabled` : `boolean`
2016-04-25 06:36:38 +00:00
2017-10-10 19:55:15 +00:00
### `systemPreferences.removeUserDefault(key)` _macOS_
2021-11-16 04:13:18 +00:00
* `key` string
2017-10-10 19:55:15 +00:00
Removes the `key` in `NSUserDefaults` . This can be used to restore the default
or global value of a `key` previously set with `setUserDefault` .
2016-04-25 06:36:38 +00:00
### `systemPreferences.isAeroGlassEnabled()` _Windows_
2021-11-16 04:13:18 +00:00
Returns `boolean` - `true` if [DWM composition][dwm-composition] (Aero Glass) is
2016-04-25 06:36:38 +00:00
enabled, and `false` otherwise.
An example of using it to determine if you should create a transparent window or
not (transparent windows won't work correctly when DWM composition is disabled):
```javascript
2018-09-13 16:10:51 +00:00
const { BrowserWindow, systemPreferences } = require('electron')
2020-07-09 17:18:49 +00:00
const browserOptions = { width: 1000, height: 800 }
2016-04-25 06:36:38 +00:00
// Make the window transparent only if the platform supports it.
2016-04-30 15:50:04 +00:00
if (process.platform !== 'win32' || systemPreferences.isAeroGlassEnabled()) {
2016-07-26 01:39:25 +00:00
browserOptions.transparent = true
browserOptions.frame = false
2016-04-25 06:36:38 +00:00
}
// Create the window.
2020-07-09 17:18:49 +00:00
const win = new BrowserWindow(browserOptions)
2016-04-25 06:36:38 +00:00
// Navigate.
if (browserOptions.transparent) {
2023-05-15 07:58:35 +00:00
win.loadFile('index.html')
2016-04-25 06:36:38 +00:00
} else {
// No transparency, so we load a fallback that uses basic styles.
2023-05-15 07:58:35 +00:00
win.loadFile('fallback.html')
2016-04-25 06:36:38 +00:00
}
```
2023-03-21 15:39:19 +00:00
[dwm-composition]: https://learn.microsoft.com/en-us/windows/win32/dwm/composition-ovw
2016-09-16 16:08:41 +00:00
2019-01-03 21:24:55 +00:00
### `systemPreferences.getAccentColor()` _Windows_ _macOS_
2016-09-16 16:08:41 +00:00
2021-11-16 04:13:18 +00:00
Returns `string` - The users current system wide accent color preference in RGBA
2016-10-11 16:32:03 +00:00
hexadecimal form.
2016-09-16 16:08:41 +00:00
```js
2016-09-24 18:45:34 +00:00
const color = systemPreferences.getAccentColor() // `"aabbccdd"`
2016-09-16 16:08:41 +00:00
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"
```
2016-10-06 22:31:43 +00:00
2019-01-03 21:24:55 +00:00
This API is only available on macOS 10.14 Mojave or newer.
2019-01-04 00:17:07 +00:00
### `systemPreferences.getColor(color)` _Windows_ _macOS_
2016-10-11 16:32:03 +00:00
2021-11-16 04:13:18 +00:00
* `color` string - One of the following values:
2019-01-04 00:17:07 +00:00
* On **Windows** :
* `3d-dark-shadow` - Dark shadow for three-dimensional display elements.
* `3d-face` - Face color for three-dimensional display elements and for dialog
box backgrounds.
* `3d-highlight` - Highlight color for three-dimensional display elements.
* `3d-light` - Light color for three-dimensional display elements.
* `3d-shadow` - Shadow color for three-dimensional display elements.
* `active-border` - Active window border.
* `active-caption` - Active window title bar. Specifies the left side color in
the color gradient of an active window's title bar if the gradient effect is
enabled.
* `active-caption-gradient` - Right side color in the color gradient of an
active window's title bar.
* `app-workspace` - Background color of multiple document interface (MDI)
applications.
* `button-text` - Text on push buttons.
* `caption-text` - Text in caption, size box, and scroll bar arrow box.
* `desktop` - Desktop background color.
* `disabled-text` - Grayed (disabled) text.
* `highlight` - Item(s) selected in a control.
* `highlight-text` - Text of item(s) selected in a control.
* `hotlight` - Color for a hyperlink or hot-tracked item.
* `inactive-border` - Inactive window border.
* `inactive-caption` - Inactive window caption. Specifies the left side color
in the color gradient of an inactive window's title bar if the gradient
effect is enabled.
* `inactive-caption-gradient` - Right side color in the color gradient of an
inactive window's title bar.
* `inactive-caption-text` - Color of text in an inactive caption.
* `info-background` - Background color for tooltip controls.
* `info-text` - Text color for tooltip controls.
* `menu` - Menu background.
* `menu-highlight` - The color used to highlight menu items when the menu
appears as a flat menu.
* `menubar` - The background color for the menu bar when menus appear as flat
menus.
* `menu-text` - Text in menus.
* `scrollbar` - Scroll bar gray area.
* `window` - Window background.
* `window-frame` - Window frame.
* `window-text` - Text in windows.
* On **macOS**
2023-07-20 09:16:20 +00:00
* `alternate-selected-control-text` - The text on a selected surface in a list or table. _Deprecated_
2019-01-04 00:17:07 +00:00
* `control-background` - The background of a large interface element, such as a browser or table.
* `control` - The surface of a control.
* `control-text` -The text of a control that isn’ t disabled.
* `disabled-control-text` - The text of a control that’ s disabled.
* `find-highlight` - The color of a find indicator.
* `grid` - The gridlines of an interface element such as a table.
* `header-text` - The text of a header cell in a table.
* `highlight` - The virtual light source onscreen.
* `keyboard-focus-indicator` - The ring that appears around the currently focused control when using the keyboard for interface navigation.
* `label` - The text of a label containing primary content.
* `link` - A link to other content.
* `placeholder-text` - A placeholder string in a control or text view.
* `quaternary-label` - The text of a label of lesser importance than a tertiary label such as watermark text.
* `scrubber-textured-background` - The background of a scrubber in the Touch Bar.
* `secondary-label` - The text of a label of lesser importance than a normal label such as a label used to represent a subheading or additional information.
* `selected-content-background` - The background for selected content in a key window or view.
* `selected-control` - The surface of a selected control.
* `selected-control-text` - The text of a selected control.
2019-10-21 21:31:03 +00:00
* `selected-menu-item-text` - The text of a selected menu.
2019-01-04 00:17:07 +00:00
* `selected-text-background` - The background of selected text.
* `selected-text` - Selected text.
* `separator` - A separator between different sections of content.
* `shadow` - The virtual shadow cast by a raised object onscreen.
* `tertiary-label` - The text of a label of lesser importance than a secondary label such as a label used to represent disabled text.
* `text-background` - Text background.
* `text` - The text in a document.
* `under-page-background` - The background behind a document's content.
* `unemphasized-selected-content-background` - The selected content in a non-key window or view.
* `unemphasized-selected-text-background` - A background for selected text in a non-key window or view.
* `unemphasized-selected-text` - Selected text in a non-key window or view.
* `window-background` - The background of a window.
2019-03-20 20:12:47 +00:00
* `window-frame-text` - The text in the window's titlebar area.
2016-10-11 16:32:03 +00:00
2021-11-16 04:13:18 +00:00
Returns `string` - The system color setting in RGB hexadecimal form (`#ABCDEF`).
2020-03-31 04:06:25 +00:00
See the [Windows docs][windows-colors] and the [macOS docs][macos-colors] for more details.
2016-10-11 16:32:03 +00:00
2019-10-21 21:31:03 +00:00
The following colors are only available on macOS 10.14: `find-highlight` , `selected-content-background` , `separator` , `unemphasized-selected-content-background` , `unemphasized-selected-text-background` , and `unemphasized-selected-text` .
2023-03-21 15:39:19 +00:00
[windows-colors]: https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getsyscolor
[macos-colors]: https://developer.apple.com/design/human-interface-guidelines/macos/visual-design/color#dynamic-system-colors
2018-10-31 14:22:18 +00:00
2019-01-03 22:30:38 +00:00
### `systemPreferences.getSystemColor(color)` _macOS_
2021-11-16 04:13:18 +00:00
* `color` string - One of the following values:
2019-01-03 22:30:38 +00:00
* `blue`
* `brown`
* `gray`
* `green`
* `orange`
* `pink`
* `purple`
* `red`
* `yellow`
2021-11-16 04:13:18 +00:00
Returns `string` - The standard system color formatted as `#RRGGBBAA` .
2019-07-24 17:40:12 +00:00
2019-01-03 22:30:38 +00:00
Returns one of several standard system colors that automatically adapt to vibrancy and changes in accessibility settings like 'Increase contrast' and 'Reduce transparency'. See [Apple Documentation ](https://developer.apple.com/design/human-interface-guidelines/macos/visual-design/color#system-colors ) for more details.
2019-08-14 20:42:55 +00:00
### `systemPreferences.isInvertedColorScheme()` _Windows_ _Deprecated_
2016-10-06 22:31:43 +00:00
2021-11-16 04:13:18 +00:00
Returns `boolean` - `true` if an inverted color scheme (a high contrast color scheme with light text and dark backgrounds) is active, `false` otherwise.
2016-10-11 16:32:03 +00:00
2019-08-14 20:42:55 +00:00
**Deprecated:** Should use the new [`nativeTheme.shouldUseInvertedColorScheme` ](native-theme.md#nativethemeshoulduseinvertedcolorscheme-macos-windows-readonly ) API.
### `systemPreferences.isHighContrastColorScheme()` _macOS_ _Windows_ _Deprecated_
2018-10-31 14:22:18 +00:00
2021-11-16 04:13:18 +00:00
Returns `boolean` - `true` if a high contrast theme is active, `false` otherwise.
2018-09-27 15:33:31 +00:00
2020-03-18 01:06:52 +00:00
**Deprecated:** Should use the new [`nativeTheme.shouldUseHighContrastColors` ](native-theme.md#nativethemeshouldusehighcontrastcolors-macos-windows-readonly ) API.
2019-08-14 20:42:55 +00:00
2018-09-27 15:33:31 +00:00
### `systemPreferences.getEffectiveAppearance()` _macOS_
2021-11-16 04:13:18 +00:00
Returns `string` - Can be `dark` , `light` or `unknown` .
2018-09-27 15:33:31 +00:00
Gets the macOS appearance setting that is currently applied to your application,
maps to [NSApplication.effectiveAppearance ](https://developer.apple.com/documentation/appkit/nsapplication/2967171-effectiveappearance?language=objc )
2019-08-14 20:42:55 +00:00
### `systemPreferences.getAppLevelAppearance()` _macOS_ _Deprecated_
2018-09-27 15:33:31 +00:00
2021-11-16 04:13:18 +00:00
Returns `string` | `null` - Can be `dark` , `light` or `unknown` .
2018-09-27 15:33:31 +00:00
Gets the macOS appearance setting that you have declared you want for
your application, maps to [NSApplication.appearance ](https://developer.apple.com/documentation/appkit/nsapplication/2967170-appearance?language=objc ).
You can use the `setAppLevelAppearance` API to set this value.
2019-08-14 20:42:55 +00:00
### `systemPreferences.setAppLevelAppearance(appearance)` _macOS_ _Deprecated_
2018-09-27 15:33:31 +00:00
2021-11-16 04:13:18 +00:00
* `appearance` string | null - Can be `dark` or `light`
2018-09-27 15:33:31 +00:00
Sets the appearance setting for your application, this should override the
system default and override the value of `getEffectiveAppearance` .
2018-12-04 15:54:13 +00:00
2019-02-14 02:36:28 +00:00
### `systemPreferences.canPromptTouchID()` _macOS_
2021-11-16 04:13:18 +00:00
Returns `boolean` - whether or not this device has the ability to use Touch ID.
2019-02-14 02:36:28 +00:00
### `systemPreferences.promptTouchID(reason)` _macOS_
2021-11-16 04:13:18 +00:00
* `reason` string - The reason you are asking for Touch ID authentication
2019-02-14 02:36:28 +00:00
Returns `Promise<void>` - resolves if the user has successfully authenticated with Touch ID.
```javascript
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)
})
```
2020-08-18 07:55:16 +00:00
This API itself will not protect your user data; rather, it is a mechanism to allow you to do so. Native apps will need to set [Access Control Constants ](https://developer.apple.com/documentation/security/secaccesscontrolcreateflags?language=objc ) like [`kSecAccessControlUserPresence` ](https://developer.apple.com/documentation/security/secaccesscontrolcreateflags/ksecaccesscontroluserpresence?language=objc ) on their keychain entry so that reading it would auto-prompt for Touch ID biometric consent. This could be done with [`node-keytar` ](https://github.com/atom/node-keytar ), such that one would store an encryption key with `node-keytar` and only fetch it if `promptTouchID()` resolves.
2019-02-14 02:36:28 +00:00
2018-12-18 16:15:22 +00:00
### `systemPreferences.isTrustedAccessibilityClient(prompt)` _macOS_
2021-11-16 04:13:18 +00:00
* `prompt` boolean - whether or not the user will be informed via prompt if the current process is untrusted.
2018-12-18 16:15:22 +00:00
2021-11-16 04:13:18 +00:00
Returns `boolean` - `true` if the current process is a trusted accessibility client and `false` if it is not.
2018-12-18 16:15:22 +00:00
2020-06-25 16:47:50 +00:00
### `systemPreferences.getMediaAccessStatus(mediaType)` _Windows_ _macOS_
2018-12-04 15:54:13 +00:00
2021-11-16 04:13:18 +00:00
* `mediaType` string - Can be `microphone` , `camera` or `screen` .
2018-12-04 15:54:13 +00:00
2021-11-16 04:13:18 +00:00
Returns `string` - Can be `not-determined` , `granted` , `denied` , `restricted` or `unknown` .
2018-12-04 15:54:13 +00:00
2023-02-16 00:29:02 +00:00
This user consent was not required on macOS 10.13 High Sierra so this method will always return `granted` .
2019-11-13 21:47:51 +00:00
macOS 10.14 Mojave or higher requires consent for `microphone` and `camera` access.
macOS 10.15 Catalina or higher requires consent for `screen` access.
2018-12-04 15:54:13 +00:00
2020-06-25 16:47:50 +00:00
Windows 10 has a global setting controlling `microphone` and `camera` access for all win32 applications.
It will always return `granted` for `screen` and for all media types on older versions of Windows.
2018-12-04 15:54:13 +00:00
### `systemPreferences.askForMediaAccess(mediaType)` _macOS_
2021-11-16 04:13:18 +00:00
* `mediaType` string - the type of media being requested; can be `microphone` , `camera` .
2018-12-04 15:54:13 +00:00
2021-11-16 04:13:18 +00:00
Returns `Promise<boolean>` - A promise that resolves with `true` if consent was granted and `false` if it was denied. If an invalid `mediaType` is passed, the promise will be rejected. If an access request was denied and later is changed through the System Preferences pane, a restart of the app will be required for the new permissions to take effect. If access has already been requested and denied, it _must_ be changed through the preference pane; an alert will not pop up and the promise will resolve with the existing access status.
2018-12-04 15:54:13 +00:00
2022-12-05 18:18:57 +00:00
**Important:** In order to properly leverage this API, you [must set ](https://developer.apple.com/documentation/avfoundation/cameras_and_media_capture/requesting_authorization_for_media_capture_on_macos?language=objc ) the `NSMicrophoneUsageDescription` and `NSCameraUsageDescription` strings in your app's `Info.plist` file. The values for these keys will be used to populate the permission dialogs so that the user will be properly informed as to the purpose of the permission request. See [Electron Application Distribution ](../tutorial/application-distribution.md#rebranding-with-downloaded-binaries ) for more information about how to set these in the context of Electron.
2018-12-04 15:54:13 +00:00
2023-02-16 00:29:02 +00:00
This user consent was not required until macOS 10.14 Mojave, so this method will always return `true` if your system is running 10.13 High Sierra.
2019-03-19 19:15:40 +00:00
### `systemPreferences.getAnimationSettings()`
Returns `Object` :
2021-11-16 04:13:18 +00:00
* `shouldRenderRichAnimation` boolean - Returns true if rich animations should be rendered. Looks at session type (e.g. remote desktop) and accessibility settings to give guidance for heavy animations.
* `scrollAnimationsEnabledBySystem` boolean - Determines on a per-platform basis whether scroll animations (e.g. produced by home/end key) should be enabled.
* `prefersReducedMotion` boolean - Determines whether the user desires reduced motion based on platform APIs.
2019-03-19 19:15:40 +00:00
Returns an object with system animation settings.
2019-05-31 00:12:46 +00:00
## Properties
### `systemPreferences.appLevelAppearance` _macOS_
2021-11-16 04:13:18 +00:00
A `string` property that can be `dark` , `light` or `unknown` . It determines the macOS appearance setting for
2019-05-31 00:12:46 +00:00
your application. This maps to values in: [NSApplication.appearance ](https://developer.apple.com/documentation/appkit/nsapplication/2967170-appearance?language=objc ). Setting this will override the
system default as well as the value of `getEffectiveAppearance` .
Possible values that can be set are `dark` and `light` , and possible return values are `dark` , `light` , and `unknown` .
2019-07-24 17:40:12 +00:00
This property is only available on macOS 10.14 Mojave or newer.
2019-08-14 20:42:55 +00:00
### `systemPreferences.effectiveAppearance` _macOS_ _Readonly_
2021-11-16 04:13:18 +00:00
A `string` property that can be `dark` , `light` or `unknown` .
2019-08-14 20:42:55 +00:00
Returns the macOS appearance setting that is currently applied to your application,
maps to [NSApplication.effectiveAppearance ](https://developer.apple.com/documentation/appkit/nsapplication/2967171-effectiveappearance?language=objc )