> For the complete documentation index, see [llms.txt](https://deskifier.gitbook.io/deskifier/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://deskifier.gitbook.io/deskifier/readme.md).

# Introduction

Deskifier is a desktop app platform that wraps web applications into native desktop apps for **macOS**, **Windows**, and **Linux**. You ship a real native binary without writing Electron code yourself.

Every Deskifier app runs your web app inside a native window and gives it direct access to desktop capabilities through a globally-injected bridge: `window.deskifier`.

## What you can build

* **Native windows** — custom title bars, traffic-light positions, transparency, full programmatic window control.
* **System integration** — tray icons, menu bars, context menus, dock menus, global shortcuts, deep links
* **Filesystem access** — read/write with an allowlist-based permission model, watch directories, manage downloads
* **Notifications** — native OS notifications, badge counts, taskbar/dock flashing, inline reply on macOS
* **External application control** — list and focus other apps' windows, or overlay your window on top of them
* **In-app purchases** — Mac App Store IAP via StoreKit
* **Printing** — native print dialog and print-to-PDF
* **Dialogs** — open/save/message/error boxes
* **WebSocket server** — a secure in-app WSS server for bridging to other processes
* **And more!**

## Using Deskifier

`window.deskifier` is available in every Deskifier window.

{% tabs %}
{% tab title="JavaScript" %}
{% code overflow="wrap" %}

```javascript
await window.deskifier.windows.create({
  constructorOptions: { url: 'https://mysite.com/settings' },
  windowProperties: { width: 800, height: 600 }
});
```

{% endcode %}
{% endtab %}
{% endtabs %}

Every method in these docs follows this namespaced pattern — `window.deskifier.<namespace>.<method>(...)`.

## Add types with the TypeScript SDK

If you're writing TypeScript, install the optional `@deskifier/sdk` package to get typed method signatures, autocomplete, and inline documentation:

{% code overflow="wrap" %}

```bash
npm install @deskifier/sdk
```

{% endcode %}

Import it once anywhere in your project and TypeScript picks up the ambient types on `window.deskifier`:

{% tabs %}
{% tab title="TypeScript" %}
{% code overflow="wrap" %}

```typescript
import '@deskifier/sdk';

// window.deskifier is now fully typed
const result = await window.deskifier.windows.create({
  constructorOptions: { url: 'https://mysite.com/settings' },
  windowProperties: { width: 800, height: 600 }
});
```

{% endcode %}
{% endtab %}
{% endtabs %}

{% hint style="info" %}
The SDK is **optional**. It only adds TypeScript types - the `window.deskifier` runtime is always available. Any code can call `window.deskifier.<namespace>.<method>(...)` directly without installing anything.
{% endhint %}
