*`invertedColorScheme` Boolean - `true` if an inverted color scheme (a high contrast color scheme with light text and dark backgrounds) is being used, `false` otherwise.
**Note:** On macOS 10.15 Catalina in order for this API to return the correct value when in the "automatic" dark mode setting you must either have `NSRequiresAquaSystemAppearance=false` in your `Info.plist` or be on Electron `>=7.0.0`. See the [dark mode guide](../tutorial/mojave-dark-mode-guide.md) for more information.
*`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**
*`alternate-selected-control-text` - The text on a selected surface in a list or table.
*`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.
*`selected-menu-item` - The text of a selected menu.
*`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.
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.
Returns `Boolean` - `true` if an inverted color scheme (a high contrast color scheme with light text and dark backgrounds) is active, `false` otherwise.
packager option to `true`. See the [Electron Packager API](https://github.com/electron/electron-packager/blob/master/docs/api.md#darwindarkmodesupport)
*`reason` String - The reason you are asking for Touch ID authentication
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)
})
```
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 the 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.
**NOTE:** This API will return a rejected Promise on macOS systems older than Sierra 10.12.2.
Returns `String` - Can be `not-determined`, `granted`, `denied`, `restricted` or `unknown`.
This user consent was not required until macOS 10.14 Mojave, so this method will always return `granted` if your system is running 10.13 High Sierra or lower.
*`mediaType` String - the type of media being requested; can be `microphone`, `camera`.
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.
**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](https://electronjs.org/docs/tutorial/application-distribution#macos) for more information about how to set these in the context of Electron.
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 or lower.
*`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.
A `String` property that determines the macOS appearance setting for
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`.