*`invertedColorScheme` Boolean - `true` if an inverted color scheme (a high contrast color scheme with light text and dark backgrounds) is being used, `false` otherwise.
*`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.
*`window-frame-text` - The text in the window's titlebar area.
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.
the interim in order for your application to inherit the OS preference you must set the
`NSRequiresAquaSystemAppearance` key in your apps `Info.plist` to `false`. If you are
using `electron-packager` or `electron-forge` just set the `enableDarwinDarkMode`
packager option to `true`. See the [Electron Packager API](https://github.com/electron-userland/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.