# io.Connect Desktop

**Kind**: module | **Library**: @interopio/desktop

**Source**: https://docs.interop.io/desktop/reference/javascript/io.connect desktop/index.html

io.Connect Desktop is a desktop integration platform that enables functional and visual integration of web, native and legacy apps.

The io.Connect JavaScript library enables web apps to participate in io.Connect Desktop and use io.Connect functionalities via a set of APIs.

## Referencing

### From a JavaScript File

io.Connect JavaScript is a library available as a single JavaScript file, which you can include in your web apps using a `<script>` tag:

```html
<script type="text/javascript" src="desktop.umd.js"></script>
```

When deploying your app in production, it's recommended to always reference a specific minified version:

```html
<script type="text/javascript" src="desktop.umd.min.js"></script>
```

### From an NPM Module

The io.Connect JavaScript library is also available as an `npm` package, which you can include as a dependency in your project and import in your code.
The currently available packages are [`@interopio/core`](https://www.npmjs.com/package/@interopio/core) and
[`@interopio/desktop`](https://www.npmjs.com/package/@interopio/desktop).
The Core package is a subset of the Desktop package and offers basic functionalities for sharing data between apps
(Interop, Shared Contexts, Pub/Sub, Metrics),
while the Desktop package offers additional options for sharing data between apps (Channels), as well as advanced window management
functionalities (App Management, Layouts, Window Management).

To install the io.Connect library in your project, execute the following command:

```cmd
npm install@interopio/desktop
```

## Initialization

The io.Connect Desktop library registers a global factory function called `IODesktop()` that will resolve with the initialized API object when invoked:

```javascript
import IODesktop from "@interopio/desktop";

const io = await IODesktop();
```

Optionally, you can provide configuration for the library:

```javascript
import IODesktop from "@interopio/desktop";

// Enabling the Channels API.
const config = { channels: true };

const io = await IODesktop(config);
```

## Interfaces

- [API](https://docs.interop.io/desktop/reference/javascript/io.connect%20desktop/api/index.md): Instance of the initialized io.Connect library.
- [Auth](https://docs.interop.io/desktop/reference/javascript/io.connect%20desktop/auth/index.md): Authentication can use one of the following flows:
- [AuthInfo](https://docs.interop.io/desktop/reference/javascript/io.connect%20desktop/authinfo/index.md): Authentication information
- [Config](https://docs.interop.io/desktop/reference/javascript/io.connect%20desktop/config/index.md): Optional configuration object for initializing the io.Connect library.
- [Cookie](https://docs.interop.io/desktop/reference/javascript/io.connect%20desktop/cookie/index.md): Cookie object
- [CookiesGetFilter](https://docs.interop.io/desktop/reference/javascript/io.connect%20desktop/cookiesgetfilter/index.md): Filter for retrieving cookies
- [CookiesManager](https://docs.interop.io/desktop/reference/javascript/io.connect%20desktop/cookiesmanager/index.md): Cookie management API exposed on window.glue42gd.cookies
- [CookiesSetDetails](https://docs.interop.io/desktop/reference/javascript/io.connect%20desktop/cookiessetdetails/index.md): Details for setting a cookie
- [CustomHeadersManager](https://docs.interop.io/desktop/reference/javascript/io.connect%20desktop/customheadersmanager/index.md): Custom request headers API exposed on window.glue42gd.customHeaders
- [Display](https://docs.interop.io/desktop/reference/javascript/io.connect%20desktop/display/index.md): Display/monitor information
- [DownloadItem](https://docs.interop.io/desktop/reference/javascript/io.connect%20desktop/downloaditem/index.md): Download item information
- [DownloadsConfiguration](https://docs.interop.io/desktop/reference/javascript/io.connect%20desktop/downloadsconfiguration/index.md): Downloads configuration
- [DownloadsManager](https://docs.interop.io/desktop/reference/javascript/io.connect%20desktop/downloadsmanager/index.md): Download manager API exposed on window.glue42gd.downloads
- [Endpoints](https://docs.interop.io/desktop/reference/javascript/io.connect%20desktop/endpoints/index.md): Endpoint configurations
- [FeedbackInfo](https://docs.interop.io/desktop/reference/javascript/io.connect%20desktop/feedbackinfo/index.md): Allows customizing the feedback form
- [GatewayConfig](https://docs.interop.io/desktop/reference/javascript/io.connect%20desktop/gatewayconfig/index.md): Configurations for the io.Connect Gateway connection.
- [GWInfo](https://docs.interop.io/desktop/reference/javascript/io.connect%20desktop/gwinfo/index.md): Gateway connection information
- [InprocGWSettings](https://docs.interop.io/desktop/reference/javascript/io.connect%20desktop/inprocgwsettings/index.md)
- [IODesktopInfo](https://docs.interop.io/desktop/reference/javascript/io.connect%20desktop/iodesktopinfo/index.md): Object containing desktop-specific APIs and properties, injected by the
- [IODesktopObject](https://docs.interop.io/desktop/reference/javascript/io.connect%20desktop/iodesktopobject/index.md): Object injected by the io.Connect Desktop preload script, containing
- [LoggerConfig](https://docs.interop.io/desktop/reference/javascript/io.connect%20desktop/loggerconfig/index.md)
- [MetricsConfig](https://docs.interop.io/desktop/reference/javascript/io.connect%20desktop/metricsconfig/index.md): Metrics configurations.
- [OpenDialogOptions](https://docs.interop.io/desktop/reference/javascript/io.connect%20desktop/opendialogoptions/index.md): Options for the open dialog
- [OpenDialogReturnValue](https://docs.interop.io/desktop/reference/javascript/io.connect%20desktop/opendialogreturnvalue/index.md): Return value from the open dialog
- [PagePerformanceMetricsConfig](https://docs.interop.io/desktop/reference/javascript/io.connect%20desktop/pageperformancemetricsconfig/index.md)
- [PropagationInfo](https://docs.interop.io/desktop/reference/javascript/io.connect%20desktop/propagationinfo/index.md): Span and trace information that can be used to manually control the
- [ProxyConfig](https://docs.interop.io/desktop/reference/javascript/io.connect%20desktop/proxyconfig/index.md): Proxy configuration
- [RequestHeadersFilter](https://docs.interop.io/desktop/reference/javascript/io.connect%20desktop/requestheadersfilter/index.md): Filter for custom request headers
- [Settings](https://docs.interop.io/desktop/reference/javascript/io.connect%20desktop/settings/index.md)
- [WebPlatformConnection](https://docs.interop.io/desktop/reference/javascript/io.connect%20desktop/webplatformconnection/index.md)
- [WorkspacesPlacementConfig](https://docs.interop.io/desktop/reference/javascript/io.connect%20desktop/workspacesplacementconfig/index.md): Workspaces placement configuration

## Type Aliases

- [ChannelContext](https://docs.interop.io/desktop/reference/javascript/io.connect%20desktop/channelcontext/index.md)
- [Channels](https://docs.interop.io/desktop/reference/javascript/io.connect%20desktop/channels/index.md)

## Functions

- [IOConnectDesktopFactoryFunction](https://docs.interop.io/desktop/reference/javascript/io.connect%20desktop/ioconnectdesktopfactoryfunction/index.md): Factory function that creates a new io.Connect instance.

## Runtime globals

- **`iodesktop?`** - <p>Object injected in the global <code>window</code> object by <strong>io.Connect Desktop</strong>. Provides properties and APIs that can be used before the <code>@interopio/desktop</code> library has been initialized.</p>
- **`ioDesktopInfo?`** - <p>Object injected in the global <code>window</code> object by <strong>io.Connect Desktop</strong>. Provides information about the platform, such as the version and build strings.</p>
