2016-05-17 23:02:54 +00:00
# Environment Variables
2015-11-26 12:37:48 +00:00
2016-04-21 22:39:12 +00:00
> Control application configuration and behavior without changing code.
2016-04-21 22:35:29 +00:00
2016-05-20 21:03:28 +00:00
Certain Electron behaviors are controlled by environment variables because they
are initialized earlier than the command line flags and the app's code.
2015-11-26 12:37:48 +00:00
2016-05-20 21:03:56 +00:00
POSIX shell example:
2015-11-26 12:44:07 +00:00
2017-11-24 10:13:57 +00:00
```sh
2015-11-26 12:44:07 +00:00
$ export ELECTRON_ENABLE_LOGGING=true
$ electron
```
2016-05-20 21:03:56 +00:00
Windows console example:
2015-11-26 12:44:07 +00:00
```powershell
> set ELECTRON_ENABLE_LOGGING=true
> electron
```
2016-09-20 20:58:39 +00:00
## Production Variables
The following environment variables are intended primarily for use at runtime
in packaged Electron applications.
2018-10-18 23:57:28 +00:00
### `NODE_OPTIONS`
Electron includes support for a subset of Node's [`NODE_OPTIONS` ](https://nodejs.org/api/cli.html#cli_node_options_options ). The majority are supported with the exception of those which conflict with Chromium's use of BoringSSL.
Example:
```sh
export NODE_OPTIONS="--no-warnings --max-old-space-size=2048"
```
Unsupported options are:
```sh
--use-bundled-ca
--force-fips
--enable-fips
--openssl-config
--use-openssl-ca
```
2019-11-02 01:06:15 +00:00
`NODE_OPTIONS` are explicitly disallowed in packaged apps, except for the following:
```sh
--max-http-header-size
2020-01-09 16:09:14 +00:00
--http-parser
2019-11-02 01:06:15 +00:00
```
2018-10-18 23:57:28 +00:00
2016-09-20 20:58:39 +00:00
### `GOOGLE_API_KEY`
2020-02-06 17:28:06 +00:00
Geolocation support in Electron requires the use of Google Cloud Platform's
geolocation webservice. To enable this feature, acquire a
[Google API key ](https://developers.google.com/maps/documentation/geolocation/get-api-key )
and place the following code in your main process file, before opening any
browser windows that will make geolocation requests:
2016-09-20 20:58:39 +00:00
```javascript
2016-09-20 21:55:45 +00:00
process.env.GOOGLE_API_KEY = 'YOUR_KEY_HERE'
2016-09-20 20:58:39 +00:00
```
2020-02-06 17:28:06 +00:00
By default, a newly generated Google API key may not be allowed to make geolocation requests.
To enable the geolocation webservice for your project, enable it through the
[API library ](https://console.cloud.google.com/apis/library ).
N.B. You will need to add a
[Billing Account ](https://cloud.google.com/billing/docs/how-to/payment-methods#add_a_payment_method )
to the project associated to the API key for the geolocation webservice to work.
2016-09-20 20:58:39 +00:00
2016-10-04 08:39:05 +00:00
### `ELECTRON_NO_ASAR`
2016-10-07 18:03:00 +00:00
Disables ASAR support. This variable is only supported in forked child processes
and spawned child processes that set `ELECTRON_RUN_AS_NODE` .
2016-10-04 08:39:05 +00:00
2016-12-22 17:22:04 +00:00
### `ELECTRON_RUN_AS_NODE`
Starts the process as a normal Node.js process.
2020-02-07 02:59:38 +00:00
In this mode, you will be able to pass [cli options ](https://nodejs.org/api/cli.html ) to Node.js as
you would when running the normal Node.js executable, with the exception of the following flags:
* "--openssl-config"
* "--use-bundled-ca"
* "--use-openssl-ca",
* "--force-fips"
* "--enable-fips"
These flags are disabled owing to the fact that Electron uses BoringSSL instead of OpenSSL when building Node.js'
`crypto` module, and so will not work as designed.
2016-12-22 17:22:04 +00:00
### `ELECTRON_NO_ATTACH_CONSOLE` _Windows_
Don't attach to the current console session.
### `ELECTRON_FORCE_WINDOW_MENU_BAR` _Linux_
Don't use the global menu bar on Linux.
2018-10-26 15:36:56 +00:00
### `ELECTRON_TRASH` _Linux_
Set the trash implementation on Linux. Default is `gio` .
Options:
2020-11-05 22:12:43 +00:00
2018-10-26 15:36:56 +00:00
* `gvfs-trash`
* `trash-cli`
* `kioclient5`
* `kioclient`
2023-09-20 20:21:23 +00:00
### `ELECTRON_OZONE_PLATFORM_HINT` _Linux_
Selects the preferred platform backend used on Linux. The default one is `x11` . `auto` selects Wayland if possible, X11 otherwise.
Options:
* `auto`
* `wayland`
* `x11`
2016-09-20 20:58:39 +00:00
## Development Variables
The following environment variables are intended primarily for development and
debugging purposes.
2016-05-20 20:58:48 +00:00
### `ELECTRON_ENABLE_LOGGING`
2015-11-26 12:37:48 +00:00
2021-06-17 21:17:25 +00:00
Prints Chromium's internal logging to the console.
Setting this variable is the same as passing `--enable-logging`
on the command line. For more info, see `--enable-logging` in [command-line
2022-01-17 07:36:19 +00:00
switches](./command-line-switches.md#--enable-loggingfile).
2021-06-17 21:17:25 +00:00
### `ELECTRON_LOG_FILE`
Sets the file destination for Chromium's internal logging.
Setting this variable is the same as passing `--log-file`
on the command line. For more info, see `--log-file` in [command-line
2022-01-17 07:36:19 +00:00
switches](./command-line-switches.md#--log-filepath).
2015-11-26 12:37:48 +00:00
2020-12-01 23:04:07 +00:00
### `ELECTRON_DEBUG_DRAG_REGIONS`
Adds coloration to draggable regions on [`BrowserView` ](./browser-view.md )s on macOS - draggable regions will be colored
green and non-draggable regions will be colored red to aid debugging.
### `ELECTRON_DEBUG_NOTIFICATIONS`
2022-07-05 15:49:56 +00:00
Adds extra logs to [`Notification` ](./notification.md ) lifecycles on macOS to aid in debugging. Extra logging will be displayed when new Notifications are created or activated. They will also be displayed when common actions are taken: a notification is shown, dismissed, its button is clicked, or it is replied to.
2020-12-01 23:04:07 +00:00
Sample output:
```sh
Notification created (com.github.Electron:notification:EAF7B87C-A113-43D7-8E76-F88EC9D73D44)
Notification displayed (com.github.Electron:notification:EAF7B87C-A113-43D7-8E76-F88EC9D73D44)
Notification activated (com.github.Electron:notification:EAF7B87C-A113-43D7-8E76-F88EC9D73D44)
Notification replied to (com.github.Electron:notification:EAF7B87C-A113-43D7-8E76-F88EC9D73D44)
```
2016-05-20 20:58:48 +00:00
### `ELECTRON_LOG_ASAR_READS`
2015-12-23 00:05:14 +00:00
2016-01-21 18:57:50 +00:00
When Electron reads from an ASAR file, log the read offset and file path to
the system `tmpdir` . The resulting file can be provided to the ASAR module
2015-12-23 00:05:14 +00:00
to optimize file ordering.
2016-05-20 20:58:48 +00:00
### `ELECTRON_ENABLE_STACK_DUMPING`
2015-11-26 12:37:48 +00:00
2016-05-20 21:02:10 +00:00
Prints the stack trace to the console when Electron crashes.
2015-11-26 12:37:48 +00:00
2016-05-20 21:01:08 +00:00
This environment variable will not work if the `crashReporter` is started.
2015-11-26 12:37:48 +00:00
2016-05-20 20:58:48 +00:00
### `ELECTRON_DEFAULT_ERROR_MODE` _Windows_
2015-11-26 12:37:48 +00:00
2016-05-20 21:01:08 +00:00
Shows the Windows's crash dialog when Electron crashes.
2015-11-26 12:37:48 +00:00
2016-05-20 21:01:08 +00:00
This environment variable will not work if the `crashReporter` is started.
2018-03-25 04:03:17 +00:00
### `ELECTRON_OVERRIDE_DIST_PATH`
When running from the `electron` package, this variable tells
the `electron` command to use the specified build of Electron instead of
the one downloaded by `npm install` . Usage:
```sh
2019-11-07 19:51:44 +00:00
export ELECTRON_OVERRIDE_DIST_PATH=/Users/username/projects/electron/out/Testing
2018-03-25 04:03:17 +00:00
```
2020-05-13 03:13:53 +00:00
## Set By Electron
Electron sets some variables in your environment at runtime.
### `ORIGINAL_XDG_CURRENT_DESKTOP`
This variable is set to the value of `XDG_CURRENT_DESKTOP` that your application
originally launched with. Electron sometimes modifies the value of `XDG_CURRENT_DESKTOP`
to affect other logic within Chromium so if you want access to the _original_ value
you should look up this environment variable instead.