OWD is a desktop UI in the browser: windows you can move and resize, a shell (menu bar, dock, workspaces — depending on theme), and programs started from a launcher.
You work on three package types:
| Type | Example | What it does |
|---|---|---|
| Client | desktop/ in owdproject/client | The Nuxt app you run and deploy |
| Theme | @owdproject/theme-nova, @owdproject/theme-paper | Shell look + Desktop.vue + window chrome |
| App | @owdproject/app-about, @owdproject/app-todo | Programs via defineDesktopApp |
Modules add capabilities (@owdproject/module-fs, @owdproject/module-persistence). Kits (like @owdproject/kit-primevue) share component stacks and helper utilities between themes — see Kits.
A client is a normal Nuxt 4 project:
my-desktop/
├── nuxt.config.ts # modules: ['@owdproject/core']
├── desktop.config.ts # theme, apps, modules, shell keys
└── app/app.vue # <Desktop />
Core reads desktop.config.ts from the Nuxt root, installs theme → modules → apps, and registers core components (DesktopCore, DesktopWindow, …). The theme’s global Desktop component is what app.vue renders.
Bootstrap order and APIs: Boot sequence, Kernel contract.
| Workflow | When |
|---|---|
| owdproject/client | Dev core, kits, reference desktop/, clone apps/themes under apps/ and themes/ |
npm create owd | New desktop project for end users) |
| Separate app/theme repo | Publish to npm; consumers use desktop add |
The pnpm desktop command is the operational heart of the project. It is the tool that allows you to manage the entire desktop environment directly from the terminal, without having to manually edit dozens of configuration files.
From the project root you can run:
pnpm desktop # Opens the interactive control panel (TUI)
pnpm desktop dev # Starts the desktop development server
pnpm desktop add app-todo # Installs a new app and auto-updates the config
pnpm desktop validate # Verifies that your modules are correctly configured
Think of pnpm desktop as your "mission control" for installing apps, switching themes, and managing the project lifecycle.
Full reference: desktop CLI.
| Goal | Page |
|---|---|
| Run the reference desktop | Installation |
| Repo layout | Project structure |
| Write an app | Apps overview → Create from scratch |
| Write a theme | Themes overview → Create from scratch |
| Config file | desktop.config.ts |
| Dependencies | Package linking |