> Enable apps to automatically update themselves.
+Process: [Main](../tutorial/quick-start.md#main-process)
+
The `autoUpdater` module provides an interface for the
[Squirrel](https://github.com/Squirrel) framework.
> Create and control browser windows.
+Process: [Main](../tutorial/quick-start.md#main-process)
+
```javascript
// In the main process.
const {BrowserWindow} = require('electron')
> Perform copy and paste operations on the system clipboard.
-Processes: [Main](../tutorial/quick-start.md#main-process), [Renderer](../tutorial/quick-start.md#renderer-process)
+Process: [Main](../tutorial/quick-start.md#main-process), [Renderer](../tutorial/quick-start.md#renderer-process)
The following example shows how to write a string to the clipboard:
> Submit crash reports to a remote server.
+Process: [Main](../tutorial/quick-start.md#main-process), [Renderer](../tutorial/quick-start.md#renderer-process)
+
The following is an example of automatically submitting a crash report to a
remote server:
> Display native system dialogs for opening and saving files, alerting, etc.
+Process: [Main](../tutorial/quick-start.md#main-process)
+
An example of showing a dialog to select multiple files and directories:
```javascript
> Control file downloads from remote sources.
+Process: [Main](../tutorial/quick-start.md#main-process)
+
`DownloadItem` is an `EventEmitter` that represents a download item in Electron.
It is used in `will-download` event of `Session` class, and allows users to
control the download item.
* `state` String
Emitted when the download is in a terminal state. This includes a completed
-download, a cancelled download(via `downloadItem.cancel()`), and interrupted
+download, a cancelled download (via `downloadItem.cancel()`), and interrupted
download that can't be resumed.
The `state` can be one of following:
added a `path` attribute to the `File` interface which exposes the file's real
path on filesystem.
-Example on getting a real path from a dragged-onto-the-app file:
+Example of getting a real path from a dragged-onto-the-app file:
```html
<div id="holder">
> Detect keyboard events when the application does not have keyboard focus.
+Process: [Main](../tutorial/quick-start.md#main-process)
+
The `globalShortcut` module can register/unregister a global keyboard shortcut
with the operating system so that you can customize the operations for various
shortcuts.
> Communicate asynchronously from the main process to renderer processes.
+Process: [Main](../tutorial/quick-start.md#main-process)
+
The `ipcMain` module is an instance of the
[EventEmitter](https://nodejs.org/api/events.html#events_class_eventemitter) class. When used in the main
process, it handles asynchronous and synchronous messages sent from a renderer
> Communicate asynchronously from a renderer process to the main process.
+Process: [Renderer](../tutorial/quick-start.md#renderer-process)
+
The `ipcRenderer` module is an instance of the
[EventEmitter](https://nodejs.org/api/events.html#events_class_eventemitter) class. It provides a few
methods so you can send synchronous and asynchronous messages from the render
> Add items to native application menus and context menus.
+Process: [Main](../tutorial/quick-start.md#main-process)
+
See [`Menu`](menu.md) for examples.
## Class: MenuItem
> Create native application menus and context menus.
+Process: [Main](../tutorial/quick-start.md#main-process)
+
Each `Menu` consists of multiple [`MenuItem`](menu-item.md)s and each `MenuItem`
can have a submenu.
> Create tray, dock, and application icons using PNG or JPG files.
+Process: [Main](../tutorial/quick-start.md#main-process), [Renderer](../tutorial/quick-start.md#renderer-process)
+
In Electron, for the APIs that take images, you can pass either file paths or
`NativeImage` instances. An empty image will be used when `null` is passed.
> Issue HTTP/HTTPS requests using Chromium's native networking library
+Process: [Main](../tutorial/quick-start.md#main-process)
+
The `net` module is a client-side API for issuing HTTP(S) requests. It is
similar to the [HTTP](https://nodejs.org/api/http.html) and
[HTTPS](https://nodejs.org/api/https.html) modules of Node.js but uses
> Monitor power state changes.
+Process: [Main](../tutorial/quick-start.md#main-process)
+
You cannot require or use this module until the `ready` event of the `app`
module is emitted.
> Block the system from entering low-power (sleep) mode.
+Process: [Main](../tutorial/quick-start.md#main-process)
+
For example:
```javascript
> Extensions to process object.
+Process: [Main](../tutorial/quick-start.md#main-process)
+
The `process` object is extended in Electron with following APIs:
## Events
> Register a custom protocol and intercept existing protocol requests.
+Process: [Main](../tutorial/quick-start.md#main-process)
+
An example of implementing a protocol that has the same effect as the
`file://` protocol:
> Use main process modules from the renderer process.
+Process: [Renderer](../tutorial/quick-start.md#renderer-process)
+
The `remote` module provides a simple way to do inter-process communication
(IPC) between the renderer process (web page) and the main process.
> Retrieve information about screen size, displays, cursor position, etc.
+Process: [Main](../tutorial/quick-start.md#main-process),
+[Renderer](../tutorial/quick-start.md#renderer-process)
+
You cannot require or use this module until the `ready` event of the `app`
module is emitted.
> Manage browser sessions, cookies, cache, proxy settings, etc.
+Process: [Main](../tutorial/quick-start.md#main-process)
+
The `session` module can be used to create new `Session` objects.
You can also access the `session` of existing pages by using the `session`
> Manage files and URLs using their default applications.
+Process: [Main](../tutorial/quick-start.md#main-process),
+[Renderer](../tutorial/quick-start.md#renderer-process)
+
The `shell` module provides functions related to desktop integration.
An example of opening a URL in the user's default browser:
> Get system preferences.
+Process: [Main](../tutorial/quick-start.md#main-process)
+
```javascript
const {systemPreferences} = require('electron')
console.log(systemPreferences.isDarkMode())
> Add icons and context menus to the system's notification area.
+Process: [Main](../tutorial/quick-start.md#main-process)
+
```javascript
const {app, Menu, Tray} = require('electron')
> Render and control web pages.
+Process: [Main](../tutorial/quick-start.md#main-process)
+
`webContents` is an
[EventEmitter](https://nodejs.org/api/events.html#events_class_eventemitter).
It is responsible for rendering and controlling a web page and is a property of
> Customize the rendering of the current web page.
+Process: [Renderer](../tutorial/quick-start.md#renderer-process)
+
An example of zooming current page to 200%.
```javascript