Apps

Overview

What an Open Web Desktop application is and how it plugs into the core.

An OWD app is a publishable Nuxt module. When listed in desktop.config.tsapps, it registers desktop programs: launcher entries, window models, and commands. Apps do not replace the client — they plug into it.

What an app provides

ConceptRole
Nuxt module (defineNuxtModule)Adds components, plugins, Tailwind paths, optional runtimeConfig.
Runtime pluginClient-only plugin named owd-<slug>-register calls defineDesktopApp(...) with the app configuration.
ApplicationConfigStable id, title, icons, windows (models), entries (menu items), commands (actions).
Build (@nuxt/module-builder)Outputs dist/module.mjs consumed by the desktop like any other Nuxt module.

Reference repositories

RepoWhy study it
app-aboutMinimal complete app — singleton window, configKey, playground launch plugin.
app-todoMulti-window app, launch plugin pattern.
client validate fixtureSmallest valid module checked by desktop validate.

What it should not do

  • Do not depend on a specific theme (Win95, Nova, etc.): depend only on @owdproject/core as a peer and its public APIs.
  • Do not assume fixed host URL routes: the app runs inside the desktop (windows, not necessarily global router paths).

Learning path

Follow this order for a first app:

  1. Package layout — folder tree and package.json exports.
  2. Create from scratch — end-to-end tutorial (recommended starting point).
  3. Module and runtimemodule.ts, app.config.ts, Tailwind.
  4. Plugins — register plugin vs playground launch plugin.
  5. Windows and commandsApplicationConfig details.
  6. Playground — local dev mini-desktop.
  7. Build and publishprepack, npm, validation.

Also see desktop.config.ts and Package linking.