2013-09-09 07:35:57 +00:00
|
|
|
|
# app
|
2013-08-14 22:43:35 +00:00
|
|
|
|
|
2015-07-18 14:40:01 +00:00
|
|
|
|
The `app` module is responsible for controlling the application's lifecycle.
|
2013-08-14 22:43:35 +00:00
|
|
|
|
|
2015-08-24 12:38:29 +00:00
|
|
|
|
The following example shows how to quit the application when the last window is
|
|
|
|
|
closed:
|
2013-08-14 22:43:35 +00:00
|
|
|
|
|
|
|
|
|
```javascript
|
2015-11-12 13:20:09 +00:00
|
|
|
|
const app = require('electron').app;
|
2013-08-14 22:43:35 +00:00
|
|
|
|
app.on('window-all-closed', function() {
|
|
|
|
|
app.quit();
|
|
|
|
|
});
|
|
|
|
|
```
|
|
|
|
|
|
2015-08-19 16:28:48 +00:00
|
|
|
|
## Events
|
|
|
|
|
|
2015-08-19 16:51:36 +00:00
|
|
|
|
The `app` object emits the following events:
|
2015-08-19 16:28:48 +00:00
|
|
|
|
|
|
|
|
|
### Event: 'will-finish-launching'
|
2013-08-14 22:43:35 +00:00
|
|
|
|
|
2015-07-18 14:40:01 +00:00
|
|
|
|
Emitted when the application has finished basic startup. On Windows and Linux,
|
|
|
|
|
the `will-finish-launching` event is the same as the `ready` event; on OS X,
|
2015-08-24 12:38:29 +00:00
|
|
|
|
this event represents the `applicationWillFinishLaunching` notification of
|
|
|
|
|
`NSApplication`. You would usually set up listeners for the `open-file` and
|
|
|
|
|
`open-url` events here, and start the crash reporter and auto updater.
|
2013-08-14 22:43:35 +00:00
|
|
|
|
|
2015-07-18 14:40:01 +00:00
|
|
|
|
In most cases, you should just do everything in the `ready` event handler.
|
2013-08-14 22:43:35 +00:00
|
|
|
|
|
2015-08-19 16:28:48 +00:00
|
|
|
|
### Event: 'ready'
|
2013-12-27 03:08:26 +00:00
|
|
|
|
|
2015-08-07 05:15:59 +00:00
|
|
|
|
Emitted when Electron has finished initialization.
|
2013-08-14 22:43:35 +00:00
|
|
|
|
|
2015-08-19 16:28:48 +00:00
|
|
|
|
### Event: 'window-all-closed'
|
2013-08-14 22:43:35 +00:00
|
|
|
|
|
|
|
|
|
Emitted when all windows have been closed.
|
|
|
|
|
|
2015-07-18 14:40:01 +00:00
|
|
|
|
This event is only emitted when the application is not going to quit. If the
|
2015-08-19 16:28:48 +00:00
|
|
|
|
user pressed `Cmd + Q`, or the developer called `app.quit()`, Electron will
|
2015-07-18 14:40:01 +00:00
|
|
|
|
first try to close all the windows and then emit the `will-quit` event, and in
|
|
|
|
|
this case the `window-all-closed` event would not be emitted.
|
2013-08-14 22:43:35 +00:00
|
|
|
|
|
2015-08-19 16:28:48 +00:00
|
|
|
|
### Event: 'before-quit'
|
2015-02-26 03:33:42 +00:00
|
|
|
|
|
2015-08-19 16:51:36 +00:00
|
|
|
|
Returns:
|
|
|
|
|
|
2015-02-26 03:33:42 +00:00
|
|
|
|
* `event` Event
|
|
|
|
|
|
|
|
|
|
Emitted before the application starts closing its windows.
|
|
|
|
|
Calling `event.preventDefault()` will prevent the default behaviour, which is
|
|
|
|
|
terminating the application.
|
|
|
|
|
|
2015-08-19 16:28:48 +00:00
|
|
|
|
### Event: 'will-quit'
|
2013-08-14 22:43:35 +00:00
|
|
|
|
|
2015-08-19 16:51:36 +00:00
|
|
|
|
Returns:
|
|
|
|
|
|
2013-08-14 22:43:35 +00:00
|
|
|
|
* `event` Event
|
|
|
|
|
|
2013-08-29 14:37:51 +00:00
|
|
|
|
Emitted when all windows have been closed and the application will quit.
|
|
|
|
|
Calling `event.preventDefault()` will prevent the default behaviour, which is
|
|
|
|
|
terminating the application.
|
2013-08-14 22:43:35 +00:00
|
|
|
|
|
2015-08-24 12:38:29 +00:00
|
|
|
|
See the description of the `window-all-closed` event for the differences between
|
|
|
|
|
the `will-quit` and `window-all-closed` events.
|
2013-08-14 22:43:35 +00:00
|
|
|
|
|
2015-08-19 16:28:48 +00:00
|
|
|
|
### Event: 'quit'
|
2014-09-25 13:47:54 +00:00
|
|
|
|
|
2015-12-10 02:22:54 +00:00
|
|
|
|
Returns:
|
|
|
|
|
|
|
|
|
|
* `event` Event
|
|
|
|
|
* `exitCode` Integer
|
|
|
|
|
|
2015-07-18 14:40:01 +00:00
|
|
|
|
Emitted when the application is quitting.
|
2014-09-25 13:47:54 +00:00
|
|
|
|
|
2015-11-26 08:05:02 +00:00
|
|
|
|
### Event: 'open-file' _OS X_
|
2013-08-14 22:43:35 +00:00
|
|
|
|
|
2015-08-19 16:51:36 +00:00
|
|
|
|
Returns:
|
|
|
|
|
|
2013-08-14 22:43:35 +00:00
|
|
|
|
* `event` Event
|
|
|
|
|
* `path` String
|
|
|
|
|
|
2015-08-24 12:38:29 +00:00
|
|
|
|
Emitted when the user wants to open a file with the application. The `open-file`
|
|
|
|
|
event is usually emitted when the application is already open and the OS wants
|
|
|
|
|
to reuse the application to open the file. `open-file` is also emitted when a
|
|
|
|
|
file is dropped onto the dock and the application is not yet running. Make sure
|
|
|
|
|
to listen for the `open-file` event very early in your application startup to
|
|
|
|
|
handle this case (even before the `ready` event is emitted).
|
2013-08-14 22:43:35 +00:00
|
|
|
|
|
|
|
|
|
You should call `event.preventDefault()` if you want to handle this event.
|
|
|
|
|
|
2016-02-07 17:31:37 +00:00
|
|
|
|
On Windows, you have to parse `process.argv` (in the main process) to get the filepath.
|
2015-11-26 08:05:02 +00:00
|
|
|
|
|
|
|
|
|
### Event: 'open-url' _OS X_
|
2013-08-14 22:43:35 +00:00
|
|
|
|
|
2015-08-19 16:51:36 +00:00
|
|
|
|
Returns:
|
|
|
|
|
|
2013-08-14 22:43:35 +00:00
|
|
|
|
* `event` Event
|
|
|
|
|
* `url` String
|
|
|
|
|
|
2015-07-18 14:40:01 +00:00
|
|
|
|
Emitted when the user wants to open a URL with the application. The URL scheme
|
2013-08-29 14:37:51 +00:00
|
|
|
|
must be registered to be opened by your application.
|
2013-08-14 22:43:35 +00:00
|
|
|
|
|
|
|
|
|
You should call `event.preventDefault()` if you want to handle this event.
|
|
|
|
|
|
2015-09-15 01:34:27 +00:00
|
|
|
|
### Event: 'activate' _OS X_
|
2015-09-14 11:28:13 +00:00
|
|
|
|
|
2015-09-15 01:34:27 +00:00
|
|
|
|
Returns:
|
|
|
|
|
|
|
|
|
|
* `event` Event
|
2015-10-20 05:56:31 +00:00
|
|
|
|
* `hasVisibleWindows` Boolean
|
2015-09-15 01:34:27 +00:00
|
|
|
|
|
|
|
|
|
Emitted when the application is activated, which usually happens when clicks on
|
|
|
|
|
the applications's dock icon.
|
2015-09-14 11:28:13 +00:00
|
|
|
|
|
2015-08-19 16:28:48 +00:00
|
|
|
|
### Event: 'browser-window-blur'
|
2015-06-18 05:59:08 +00:00
|
|
|
|
|
2015-08-19 16:51:36 +00:00
|
|
|
|
Returns:
|
|
|
|
|
|
2015-06-18 05:59:08 +00:00
|
|
|
|
* `event` Event
|
|
|
|
|
* `window` BrowserWindow
|
|
|
|
|
|
|
|
|
|
Emitted when a [browserWindow](browser-window.md) gets blurred.
|
|
|
|
|
|
2015-08-19 16:28:48 +00:00
|
|
|
|
### Event: 'browser-window-focus'
|
2015-06-18 05:59:08 +00:00
|
|
|
|
|
2015-08-19 16:51:36 +00:00
|
|
|
|
Returns:
|
|
|
|
|
|
2015-06-18 05:59:08 +00:00
|
|
|
|
* `event` Event
|
|
|
|
|
* `window` BrowserWindow
|
|
|
|
|
|
|
|
|
|
Emitted when a [browserWindow](browser-window.md) gets focused.
|
|
|
|
|
|
2015-09-14 09:02:36 +00:00
|
|
|
|
### Event: 'browser-window-created'
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
|
|
|
|
|
* `event` Event
|
|
|
|
|
* `window` BrowserWindow
|
|
|
|
|
|
|
|
|
|
Emitted when a new [browserWindow](browser-window.md) is created.
|
|
|
|
|
|
2015-11-18 03:35:26 +00:00
|
|
|
|
### Event: 'certificate-error'
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
|
|
|
|
|
* `event` Event
|
|
|
|
|
* `webContents` [WebContents](web-contents.md)
|
|
|
|
|
* `url` URL
|
|
|
|
|
* `error` String - The error code
|
|
|
|
|
* `certificate` Object
|
|
|
|
|
* `data` Buffer - PEM encoded data
|
|
|
|
|
* `issuerName` String
|
|
|
|
|
* `callback` Function
|
|
|
|
|
|
|
|
|
|
Emitted when failed to verify the `certificate` for `url`, to trust the
|
|
|
|
|
certificate you should prevent the default behavior with
|
|
|
|
|
`event.preventDefault()` and call `callback(true)`.
|
|
|
|
|
|
|
|
|
|
```javascript
|
2016-02-18 19:41:22 +00:00
|
|
|
|
app.on('certificate-error', function(event, webContents, url, error, certificate, callback) {
|
2015-11-18 03:35:26 +00:00
|
|
|
|
if (url == "https://github.com") {
|
|
|
|
|
// Verification logic.
|
|
|
|
|
event.preventDefault();
|
|
|
|
|
callback(true);
|
|
|
|
|
} else {
|
|
|
|
|
callback(false);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
```
|
|
|
|
|
|
2015-11-18 02:10:21 +00:00
|
|
|
|
### Event: 'select-client-certificate'
|
2015-06-11 15:22:07 +00:00
|
|
|
|
|
2015-08-19 16:51:36 +00:00
|
|
|
|
Returns:
|
|
|
|
|
|
2015-06-11 15:22:07 +00:00
|
|
|
|
* `event` Event
|
2015-10-28 13:14:00 +00:00
|
|
|
|
* `webContents` [WebContents](web-contents.md)
|
|
|
|
|
* `url` URL
|
2015-06-11 15:22:07 +00:00
|
|
|
|
* `certificateList` [Objects]
|
2015-11-05 14:06:36 +00:00
|
|
|
|
* `data` Buffer - PEM encoded data
|
|
|
|
|
* `issuerName` String - Issuer's Common Name
|
2015-06-11 15:22:07 +00:00
|
|
|
|
* `callback` Function
|
|
|
|
|
|
2015-10-28 13:14:00 +00:00
|
|
|
|
Emitted when a client certificate is requested.
|
|
|
|
|
|
|
|
|
|
The `url` corresponds to the navigation entry requesting the client certificate
|
|
|
|
|
and `callback` needs to be called with an entry filtered from the list. Using
|
|
|
|
|
`event.preventDefault()` prevents the application from using the first
|
|
|
|
|
certificate from the store.
|
|
|
|
|
|
2015-08-19 16:28:48 +00:00
|
|
|
|
```javascript
|
2015-11-18 02:10:21 +00:00
|
|
|
|
app.on('select-client-certificate', function(event, webContents, url, list, callback) {
|
2015-06-11 15:22:07 +00:00
|
|
|
|
event.preventDefault();
|
|
|
|
|
callback(list[0]);
|
|
|
|
|
})
|
|
|
|
|
```
|
|
|
|
|
|
2015-10-28 13:14:00 +00:00
|
|
|
|
### Event: 'login'
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
|
|
|
|
|
* `event` Event
|
|
|
|
|
* `webContents` [WebContents](web-contents.md)
|
|
|
|
|
* `request` Object
|
|
|
|
|
* `method` String
|
|
|
|
|
* `url` URL
|
|
|
|
|
* `referrer` URL
|
|
|
|
|
* `authInfo` Object
|
|
|
|
|
* `isProxy` Boolean
|
|
|
|
|
* `scheme` String
|
|
|
|
|
* `host` String
|
|
|
|
|
* `port` Integer
|
|
|
|
|
* `realm` String
|
|
|
|
|
* `callback` Function
|
|
|
|
|
|
|
|
|
|
Emitted when `webContents` wants to do basic auth.
|
|
|
|
|
|
|
|
|
|
The default behavior is to cancel all authentications, to override this you
|
2015-10-29 05:22:00 +00:00
|
|
|
|
should prevent the default behavior with `event.preventDefault()` and call
|
2015-10-28 13:14:00 +00:00
|
|
|
|
`callback(username, password)` with the credentials.
|
|
|
|
|
|
|
|
|
|
```javascript
|
|
|
|
|
app.on('login', function(event, webContents, request, authInfo, callback) {
|
|
|
|
|
event.preventDefault();
|
|
|
|
|
callback('username', 'secret');
|
|
|
|
|
})
|
|
|
|
|
```
|
2015-06-11 15:22:07 +00:00
|
|
|
|
|
2015-06-25 14:01:57 +00:00
|
|
|
|
### Event: 'gpu-process-crashed'
|
2015-06-25 13:53:22 +00:00
|
|
|
|
|
2015-07-18 14:40:01 +00:00
|
|
|
|
Emitted when the gpu process crashes.
|
2015-06-25 13:53:22 +00:00
|
|
|
|
|
2016-03-04 04:58:58 +00:00
|
|
|
|
### Event: 'platform-theme-changed' _OS X_
|
2016-03-01 20:05:44 +00:00
|
|
|
|
|
|
|
|
|
Emitted when the system's Dark Mode theme is toggled.
|
|
|
|
|
|
2015-08-19 16:28:48 +00:00
|
|
|
|
## Methods
|
|
|
|
|
|
2015-08-19 16:51:36 +00:00
|
|
|
|
The `app` object has the following methods:
|
2015-08-19 16:28:48 +00:00
|
|
|
|
|
2015-09-09 21:09:14 +00:00
|
|
|
|
**Note:** Some methods are only available on specific operating systems and are labeled as such.
|
2015-08-25 17:12:21 +00:00
|
|
|
|
|
2015-08-19 16:28:48 +00:00
|
|
|
|
### `app.quit()`
|
2013-08-14 22:43:35 +00:00
|
|
|
|
|
2015-10-20 16:44:01 +00:00
|
|
|
|
Try to close all windows. The `before-quit` event will be emitted first. If all
|
2015-02-26 03:33:42 +00:00
|
|
|
|
windows are successfully closed, the `will-quit` event will be emitted and by
|
2015-07-18 14:40:01 +00:00
|
|
|
|
default the application will terminate.
|
2013-08-14 22:43:35 +00:00
|
|
|
|
|
2015-08-24 12:38:29 +00:00
|
|
|
|
This method guarantees that all `beforeunload` and `unload` event handlers are
|
|
|
|
|
correctly executed. It is possible that a window cancels the quitting by
|
|
|
|
|
returning `false` in the `beforeunload` event handler.
|
2013-08-14 22:43:35 +00:00
|
|
|
|
|
2015-11-06 10:27:13 +00:00
|
|
|
|
### `app.exit(exitCode)`
|
|
|
|
|
|
|
|
|
|
* `exitCode` Integer
|
|
|
|
|
|
|
|
|
|
Exits immediately with `exitCode`.
|
|
|
|
|
|
|
|
|
|
All windows will be closed immediately without asking user and the `before-quit`
|
|
|
|
|
and `will-quit` events will not be emitted.
|
|
|
|
|
|
2016-03-09 03:31:13 +00:00
|
|
|
|
### `app.focus()`
|
|
|
|
|
|
2016-03-10 07:54:07 +00:00
|
|
|
|
On Linux, focuses on the first visible window. On OS X, makes the application
|
|
|
|
|
the active app. On Windows, focuses on the application's first window.
|
2016-03-09 03:31:13 +00:00
|
|
|
|
|
|
|
|
|
### `app.hide()` _OS X_
|
|
|
|
|
|
|
|
|
|
Hides all application windows without minimizing them.
|
|
|
|
|
|
|
|
|
|
### `app.show()` _OS X_
|
|
|
|
|
|
|
|
|
|
Shows application windows after they were hidden. Does not automatically focus them.
|
|
|
|
|
|
2015-08-19 16:28:48 +00:00
|
|
|
|
### `app.getAppPath()`
|
2015-07-06 09:35:35 +00:00
|
|
|
|
|
|
|
|
|
Returns the current application directory.
|
|
|
|
|
|
2015-08-19 16:28:48 +00:00
|
|
|
|
### `app.getPath(name)`
|
2014-08-15 15:29:36 +00:00
|
|
|
|
|
2015-01-19 02:25:31 +00:00
|
|
|
|
* `name` String
|
2014-08-15 15:29:36 +00:00
|
|
|
|
|
2015-01-19 02:25:31 +00:00
|
|
|
|
Retrieves a path to a special directory or file associated with `name`. On
|
2015-07-18 14:40:01 +00:00
|
|
|
|
failure an `Error` is thrown.
|
2015-01-19 02:25:31 +00:00
|
|
|
|
|
2015-07-18 14:40:01 +00:00
|
|
|
|
You can request the following paths by the name:
|
2015-01-19 02:25:31 +00:00
|
|
|
|
|
2015-08-19 16:28:48 +00:00
|
|
|
|
* `home` User's home directory.
|
|
|
|
|
* `appData` Per-user application data directory, which by default points to:
|
2015-01-19 02:25:31 +00:00
|
|
|
|
* `%APPDATA%` on Windows
|
2015-01-19 05:10:42 +00:00
|
|
|
|
* `$XDG_CONFIG_HOME` or `~/.config` on Linux
|
2015-01-19 02:25:31 +00:00
|
|
|
|
* `~/Library/Application Support` on OS X
|
2015-08-19 16:28:48 +00:00
|
|
|
|
* `userData` The directory for storing your app's configuration files, which by
|
|
|
|
|
default it is the `appData` directory appended with your app's name.
|
|
|
|
|
* `temp` Temporary directory.
|
|
|
|
|
* `exe` The current executable file.
|
|
|
|
|
* `module` The `libchromiumcontent` library.
|
2015-11-13 05:05:16 +00:00
|
|
|
|
* `desktop` The current user's Desktop directory.
|
|
|
|
|
* `documents` Directory for a user's "My Documents".
|
|
|
|
|
* `downloads` Directory for a user's downloads.
|
|
|
|
|
* `music` Directory for a user's music.
|
|
|
|
|
* `pictures` Directory for a user's pictures.
|
|
|
|
|
* `videos` Directory for a user's videos.
|
2015-01-19 02:25:31 +00:00
|
|
|
|
|
2015-08-19 16:28:48 +00:00
|
|
|
|
### `app.setPath(name, path)`
|
2015-01-19 02:25:31 +00:00
|
|
|
|
|
|
|
|
|
* `name` String
|
|
|
|
|
* `path` String
|
|
|
|
|
|
2015-07-18 14:40:01 +00:00
|
|
|
|
Overrides the `path` to a special directory or file associated with `name`. If
|
2015-01-19 02:25:31 +00:00
|
|
|
|
the path specifies a directory that does not exist, the directory will be
|
2015-07-18 14:40:01 +00:00
|
|
|
|
created by this method. On failure an `Error` is thrown.
|
2015-01-19 02:25:31 +00:00
|
|
|
|
|
2015-08-19 16:28:48 +00:00
|
|
|
|
You can only override paths of a `name` defined in `app.getPath`.
|
2014-08-15 15:29:36 +00:00
|
|
|
|
|
2015-10-20 16:44:01 +00:00
|
|
|
|
By default, web pages' cookies and caches will be stored under the `userData`
|
2015-07-18 14:40:01 +00:00
|
|
|
|
directory. If you want to change this location, you have to override the
|
|
|
|
|
`userData` path before the `ready` event of the `app` module is emitted.
|
2015-01-19 04:39:38 +00:00
|
|
|
|
|
2015-08-19 16:28:48 +00:00
|
|
|
|
### `app.getVersion()`
|
2013-08-14 22:43:35 +00:00
|
|
|
|
|
2015-07-18 14:40:01 +00:00
|
|
|
|
Returns the version of the loaded application. If no version is found in the
|
2015-08-24 12:38:29 +00:00
|
|
|
|
application's `package.json` file, the version of the current bundle or
|
|
|
|
|
executable is returned.
|
2013-12-05 03:02:09 +00:00
|
|
|
|
|
2015-08-19 16:28:48 +00:00
|
|
|
|
### `app.getName()`
|
2013-12-05 03:02:09 +00:00
|
|
|
|
|
2015-07-18 14:40:01 +00:00
|
|
|
|
Returns the current application's name, which is the name in the application's
|
|
|
|
|
`package.json` file.
|
2013-12-05 03:02:09 +00:00
|
|
|
|
|
2013-12-05 03:46:36 +00:00
|
|
|
|
Usually the `name` field of `package.json` is a short lowercased name, according
|
2015-07-18 14:40:01 +00:00
|
|
|
|
to the npm modules spec. You should usually also specify a `productName`
|
|
|
|
|
field, which is your application's full capitalized name, and which will be
|
2015-04-16 03:31:12 +00:00
|
|
|
|
preferred over `name` by Electron.
|
2013-08-14 22:43:35 +00:00
|
|
|
|
|
2016-03-19 15:20:32 +00:00
|
|
|
|
### `app.setName(name)`
|
|
|
|
|
|
|
|
|
|
* `name` String
|
|
|
|
|
|
|
|
|
|
Overrides the current application's name.
|
|
|
|
|
|
2015-09-16 08:17:49 +00:00
|
|
|
|
### `app.getLocale()`
|
|
|
|
|
|
|
|
|
|
Returns the current application locale.
|
|
|
|
|
|
2016-03-31 08:22:09 +00:00
|
|
|
|
**Note:** When distributing your packaged app, you have to also ship the
|
|
|
|
|
`locales` folder.
|
|
|
|
|
|
|
|
|
|
**Note:** On Windows you have to call it after the `ready` events gets emitted.
|
|
|
|
|
|
2015-10-22 06:24:09 +00:00
|
|
|
|
### `app.addRecentDocument(path)` _OS X_ _Windows_
|
2014-11-17 11:02:37 +00:00
|
|
|
|
|
|
|
|
|
* `path` String
|
|
|
|
|
|
2015-07-18 14:40:01 +00:00
|
|
|
|
Adds `path` to the recent documents list.
|
2014-11-17 11:02:37 +00:00
|
|
|
|
|
2015-07-18 14:40:01 +00:00
|
|
|
|
This list is managed by the OS. On Windows you can visit the list from the task
|
|
|
|
|
bar, and on OS X you can visit it from dock menu.
|
2014-11-17 11:02:37 +00:00
|
|
|
|
|
2015-10-22 06:24:09 +00:00
|
|
|
|
### `app.clearRecentDocuments()` _OS X_ _Windows_
|
2014-11-17 11:02:37 +00:00
|
|
|
|
|
|
|
|
|
Clears the recent documents list.
|
|
|
|
|
|
2016-03-21 18:24:25 +00:00
|
|
|
|
### `app.setAsDefaultProtocolClient(protocol)` _OS X_ _Windows_
|
|
|
|
|
|
2016-03-31 05:16:14 +00:00
|
|
|
|
* `protocol` String - The name of your protocol, without `://`. If you want your
|
|
|
|
|
app to handle `electron://` links, call this method with `electron` as the
|
|
|
|
|
parameter.
|
|
|
|
|
|
2016-03-21 18:24:25 +00:00
|
|
|
|
This method sets the current executable as the default handler for a protocol
|
|
|
|
|
(aka URI scheme). It allows you to integrate your app deeper into the operating
|
|
|
|
|
system. Once registered, all links with `your-protocol://` will be openend with
|
|
|
|
|
the current executable. The whole link, including protocol, will be passed to
|
|
|
|
|
your application as a parameter.
|
2016-03-31 05:16:14 +00:00
|
|
|
|
|
2016-03-21 18:24:25 +00:00
|
|
|
|
**Note:** On OS X, you can only register protocols that have been added to
|
|
|
|
|
your app's `info.plist`, which can not be modified at runtime. You can however
|
|
|
|
|
change the file with a simple text editor or script during build time.
|
|
|
|
|
Please refer to [Apple's documentation][CFBundleURLTypes] for details.
|
|
|
|
|
|
|
|
|
|
The API uses the Windows Registry and LSSetDefaultHandlerForURLScheme internally.
|
|
|
|
|
|
2016-03-24 17:55:09 +00:00
|
|
|
|
### `app.removeAsDefaultProtocolClient(protocol)` _Windows_
|
|
|
|
|
|
2016-03-31 05:16:14 +00:00
|
|
|
|
* `protocol` String - The name of your protocol, without `://`.
|
|
|
|
|
|
2016-03-24 17:55:09 +00:00
|
|
|
|
This method checks if the current executable as the default handler for a protocol
|
|
|
|
|
(aka URI scheme). If so, it will remove the app as the default handler.
|
2016-03-31 05:16:14 +00:00
|
|
|
|
|
2016-03-24 17:55:09 +00:00
|
|
|
|
**Note:** On OS X, removing the app will automatically remove the app as the
|
|
|
|
|
default protocol handler.
|
|
|
|
|
|
2015-08-24 22:33:07 +00:00
|
|
|
|
### `app.setUserTasks(tasks)` _Windows_
|
2014-11-17 11:50:34 +00:00
|
|
|
|
|
|
|
|
|
* `tasks` Array - Array of `Task` objects
|
|
|
|
|
|
2015-07-18 14:40:01 +00:00
|
|
|
|
Adds `tasks` to the [Tasks][tasks] category of the JumpList on Windows.
|
2014-11-17 11:50:34 +00:00
|
|
|
|
|
2015-10-20 16:44:01 +00:00
|
|
|
|
`tasks` is an array of `Task` objects in the following format:
|
2014-11-17 11:50:34 +00:00
|
|
|
|
|
2015-12-22 07:04:36 +00:00
|
|
|
|
`Task` Object:
|
|
|
|
|
|
2015-08-19 16:28:48 +00:00
|
|
|
|
* `program` String - Path of the program to execute, usually you should
|
|
|
|
|
specify `process.execPath` which opens the current program.
|
|
|
|
|
* `arguments` String - The command line arguments when `program` is
|
|
|
|
|
executed.
|
|
|
|
|
* `title` String - The string to be displayed in a JumpList.
|
|
|
|
|
* `description` String - Description of this task.
|
|
|
|
|
* `iconPath` String - The absolute path to an icon to be displayed in a
|
2015-08-24 12:38:29 +00:00
|
|
|
|
JumpList, which can be an arbitrary resource file that contains an icon. You
|
|
|
|
|
can usually specify `process.execPath` to show the icon of the program.
|
2015-08-19 16:28:48 +00:00
|
|
|
|
* `iconIndex` Integer - The icon index in the icon file. If an icon file
|
|
|
|
|
consists of two or more icons, set this value to identify the icon. If an
|
|
|
|
|
icon file consists of one icon, this value is 0.
|
2014-11-17 11:50:34 +00:00
|
|
|
|
|
2015-10-20 05:56:31 +00:00
|
|
|
|
### `app.allowNTLMCredentialsForAllDomains(allow)`
|
|
|
|
|
|
|
|
|
|
* `allow` Boolean
|
|
|
|
|
|
|
|
|
|
Dynamically sets whether to always send credentials for HTTP NTLM or Negotiate
|
2015-10-20 19:35:56 +00:00
|
|
|
|
authentication - normally, Electron will only send NTLM/Kerberos credentials for
|
|
|
|
|
URLs that fall under "Local Intranet" sites (i.e. are in the same domain as you).
|
|
|
|
|
However, this detection often fails when corporate networks are badly configured,
|
|
|
|
|
so this lets you co-opt this behavior and enable it for all URLs.
|
2015-10-20 05:56:31 +00:00
|
|
|
|
|
2015-10-22 09:03:18 +00:00
|
|
|
|
### `app.makeSingleInstance(callback)`
|
2015-10-21 20:52:17 +00:00
|
|
|
|
|
|
|
|
|
* `callback` Function
|
|
|
|
|
|
|
|
|
|
This method makes your application a Single Instance Application - instead of
|
|
|
|
|
allowing multiple instances of your app to run, this will ensure that only a
|
|
|
|
|
single instance of your app is running, and other instances signal this
|
|
|
|
|
instance and exit.
|
|
|
|
|
|
2015-10-22 11:26:05 +00:00
|
|
|
|
`callback` will be called with `callback(argv, workingDirectory)` when a second
|
|
|
|
|
instance has been executed. `argv` is an Array of the second instance's command
|
|
|
|
|
line arguments, and `workingDirectory` is its current working directory. Usually
|
|
|
|
|
applications respond to this by making their primary window focused and
|
|
|
|
|
non-minimized.
|
2015-10-21 20:52:17 +00:00
|
|
|
|
|
2015-10-22 11:26:05 +00:00
|
|
|
|
The `callback` is guaranteed to be executed after the `ready` event of `app`
|
|
|
|
|
gets emitted.
|
|
|
|
|
|
|
|
|
|
This method returns `false` if your process is the primary instance of the
|
|
|
|
|
application and your app should continue loading. And returns `true` if your
|
|
|
|
|
process has sent its parameters to another instance, and you should immediately
|
|
|
|
|
quit.
|
|
|
|
|
|
|
|
|
|
On OS X the system enforces single instance automatically when users try to open
|
|
|
|
|
a second instance of your app in Finder, and the `open-file` and `open-url`
|
|
|
|
|
events will be emitted for that. However when users start your app in command
|
2016-02-15 03:13:11 +00:00
|
|
|
|
line the system's single instance mechanism will be bypassed and you have to
|
2015-10-22 11:26:05 +00:00
|
|
|
|
use this method to ensure single instance.
|
|
|
|
|
|
|
|
|
|
An example of activating the window of primary instance when a second instance
|
|
|
|
|
starts:
|
2015-10-21 20:52:17 +00:00
|
|
|
|
|
|
|
|
|
```js
|
2015-10-22 11:26:05 +00:00
|
|
|
|
var myWindow = null;
|
|
|
|
|
|
|
|
|
|
var shouldQuit = app.makeSingleInstance(function(commandLine, workingDirectory) {
|
2016-01-16 05:18:20 +00:00
|
|
|
|
// Someone tried to run a second instance, we should focus our window.
|
2015-10-22 11:26:05 +00:00
|
|
|
|
if (myWindow) {
|
|
|
|
|
if (myWindow.isMinimized()) myWindow.restore();
|
|
|
|
|
myWindow.focus();
|
2015-10-21 20:52:17 +00:00
|
|
|
|
}
|
2015-10-22 11:26:05 +00:00
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (shouldQuit) {
|
|
|
|
|
app.quit();
|
|
|
|
|
return;
|
|
|
|
|
}
|
2015-10-21 20:52:17 +00:00
|
|
|
|
|
2015-10-22 11:26:05 +00:00
|
|
|
|
// Create myWindow, load the rest of the app, etc...
|
|
|
|
|
app.on('ready', function() {
|
2015-10-21 20:52:17 +00:00
|
|
|
|
});
|
|
|
|
|
```
|
|
|
|
|
|
2015-11-03 07:36:44 +00:00
|
|
|
|
### `app.setAppUserModelId(id)` _Windows_
|
|
|
|
|
|
|
|
|
|
* `id` String
|
|
|
|
|
|
|
|
|
|
Changes the [Application User Model ID][app-user-model-id] to `id`.
|
|
|
|
|
|
2016-01-16 05:18:20 +00:00
|
|
|
|
### `app.isAeroGlassEnabled()` _Windows_
|
|
|
|
|
|
|
|
|
|
This method returns `true` if [DWM composition](https://msdn.microsoft.com/en-us/library/windows/desktop/aa969540.aspx)
|
|
|
|
|
(Aero Glass) is enabled, and `false` otherwise. You can use it to determine if
|
|
|
|
|
you should create a transparent window or not (transparent windows won't work
|
|
|
|
|
correctly when DWM composition is disabled).
|
|
|
|
|
|
|
|
|
|
Usage example:
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
let browserOptions = {width: 1000, height: 800};
|
|
|
|
|
|
|
|
|
|
// Make the window transparent only if the platform supports it.
|
|
|
|
|
if (process.platform !== 'win32' || app.isAeroGlassEnabled()) {
|
|
|
|
|
browserOptions.transparent = true;
|
|
|
|
|
browserOptions.frame = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Create the window.
|
|
|
|
|
win = new BrowserWindow(browserOptions);
|
|
|
|
|
|
|
|
|
|
// Navigate.
|
|
|
|
|
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');
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
2016-03-06 15:55:47 +00:00
|
|
|
|
### `app.isDarkMode()` _OS X_
|
2016-02-19 17:40:41 +00:00
|
|
|
|
|
2016-03-06 15:55:47 +00:00
|
|
|
|
This method returns `true` if the system is in Dark Mode, and `false` otherwise.
|
2016-02-19 17:40:41 +00:00
|
|
|
|
|
2015-08-19 16:28:48 +00:00
|
|
|
|
### `app.commandLine.appendSwitch(switch[, value])`
|
2013-08-14 22:43:35 +00:00
|
|
|
|
|
2015-08-19 16:28:48 +00:00
|
|
|
|
Append a switch (with optional `value`) to Chromium's command line.
|
2013-08-14 22:43:35 +00:00
|
|
|
|
|
2013-10-05 05:03:08 +00:00
|
|
|
|
**Note:** This will not affect `process.argv`, and is mainly used by developers
|
|
|
|
|
to control some low-level Chromium behaviors.
|
2013-08-14 22:43:35 +00:00
|
|
|
|
|
2015-08-19 16:28:48 +00:00
|
|
|
|
### `app.commandLine.appendArgument(value)`
|
2013-08-14 22:43:35 +00:00
|
|
|
|
|
2015-08-24 12:38:29 +00:00
|
|
|
|
Append an argument to Chromium's command line. The argument will be quoted
|
|
|
|
|
correctly.
|
2013-08-14 22:43:35 +00:00
|
|
|
|
|
|
|
|
|
**Note:** This will not affect `process.argv`.
|
|
|
|
|
|
2015-08-24 22:33:07 +00:00
|
|
|
|
### `app.dock.bounce([type])` _OS X_
|
2013-08-14 22:43:35 +00:00
|
|
|
|
|
2015-08-24 12:56:19 +00:00
|
|
|
|
* `type` String (optional) - Can be `critical` or `informational`. The default is
|
2015-03-30 08:13:11 +00:00
|
|
|
|
`informational`
|
2013-08-14 22:43:35 +00:00
|
|
|
|
|
2013-08-29 14:37:51 +00:00
|
|
|
|
When `critical` is passed, the dock icon will bounce until either the
|
|
|
|
|
application becomes active or the request is canceled.
|
2013-08-14 22:43:35 +00:00
|
|
|
|
|
2015-08-24 12:38:29 +00:00
|
|
|
|
When `informational` is passed, the dock icon will bounce for one second.
|
|
|
|
|
However, the request remains active until either the application becomes active
|
|
|
|
|
or the request is canceled.
|
2013-08-14 22:43:35 +00:00
|
|
|
|
|
2015-08-19 16:28:48 +00:00
|
|
|
|
Returns an ID representing the request.
|
2013-08-14 22:43:35 +00:00
|
|
|
|
|
2015-08-24 22:33:07 +00:00
|
|
|
|
### `app.dock.cancelBounce(id)` _OS X_
|
2013-08-14 22:43:35 +00:00
|
|
|
|
|
|
|
|
|
* `id` Integer
|
|
|
|
|
|
|
|
|
|
Cancel the bounce of `id`.
|
|
|
|
|
|
2015-08-24 22:33:07 +00:00
|
|
|
|
### `app.dock.setBadge(text)` _OS X_
|
2013-08-14 22:43:35 +00:00
|
|
|
|
|
|
|
|
|
* `text` String
|
|
|
|
|
|
|
|
|
|
Sets the string to be displayed in the dock’s badging area.
|
|
|
|
|
|
2015-08-24 22:33:07 +00:00
|
|
|
|
### `app.dock.getBadge()` _OS X_
|
2013-08-14 22:43:35 +00:00
|
|
|
|
|
|
|
|
|
Returns the badge string of the dock.
|
|
|
|
|
|
2015-08-24 22:33:07 +00:00
|
|
|
|
### `app.dock.hide()` _OS X_
|
2014-06-25 03:55:33 +00:00
|
|
|
|
|
|
|
|
|
Hides the dock icon.
|
|
|
|
|
|
2015-08-24 22:33:07 +00:00
|
|
|
|
### `app.dock.show()` _OS X_
|
2014-06-25 03:55:33 +00:00
|
|
|
|
|
|
|
|
|
Shows the dock icon.
|
|
|
|
|
|
2015-08-24 22:33:07 +00:00
|
|
|
|
### `app.dock.setMenu(menu)` _OS X_
|
2014-11-17 10:48:02 +00:00
|
|
|
|
|
2016-02-18 05:30:01 +00:00
|
|
|
|
* `menu` [Menu](menu.md)
|
2014-11-17 10:48:02 +00:00
|
|
|
|
|
2015-07-18 14:40:01 +00:00
|
|
|
|
Sets the application's [dock menu][dock-menu].
|
2014-11-17 10:48:02 +00:00
|
|
|
|
|
2016-01-23 23:30:14 +00:00
|
|
|
|
### `app.dock.setIcon(image)` _OS X_
|
|
|
|
|
|
|
|
|
|
* `image` [NativeImage](native-image.md)
|
|
|
|
|
|
|
|
|
|
Sets the `image` associated with this dock icon.
|
|
|
|
|
|
2014-11-17 10:48:02 +00:00
|
|
|
|
[dock-menu]:https://developer.apple.com/library/mac/documentation/Carbon/Conceptual/customizing_docktile/concepts/dockconcepts.html#//apple_ref/doc/uid/TP30000986-CH2-TPXREF103
|
2014-11-17 11:50:34 +00:00
|
|
|
|
[tasks]:http://msdn.microsoft.com/en-us/library/windows/desktop/dd378460(v=vs.85).aspx#tasks
|
2015-11-03 07:36:44 +00:00
|
|
|
|
[app-user-model-id]: https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx
|
2016-03-31 08:22:09 +00:00
|
|
|
|
[CFBundleURLTypes]: https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/TP40009249-102207-TPXREF115
|