Open Web Desktop (OWD) is intentionally split into layers. Keeping them separate is what makes “GNOME vs Windows 95 vs Nova” a theme problem, not a rewrite of your apps.
flowchart TB
subgraph consumer [Your desktop project]
config[desktop.config.ts]
nuxt[nuxt.config.ts]
end
subgraph engine [Engine]
core["@owdproject/core"]
end
subgraph kits [Optional kits]
kitPrimeVue["@owdproject/kit-primevue"]
end
subgraph external [External modules]
modFs["@owdproject/module-fs"]
modPersist["@owdproject/module-persistence"]
end
subgraph presentation [Presentation]
theme[Theme module]
apps[App modules]
end
config --> core
core --> theme
core --> modFs
core --> modPersist
theme --> kitPrimeVue
theme --> modFs
kitPrimeVue --> modFs
core --> apps
@owdproject/coredesktop.config.ts (legacy owd.config.ts), validates and splits config: theme / modules / apps drive installModule; shell keys merge into runtimeConfig.public.desktop only.useApplicationManager, useDesktopManager, useWorkspaceManager.DesktopCore, DesktopWindow, DesktopApplicationRender, …): behaviour and slots, not pixel-perfect OS chrome.module-fs and kit-primevue.If config is missing or invalid, core fails fast with an explicit error.
Public contract: Kernel contract (also DESKTOP_KERNEL.md in the core package).
| Package | Role |
|---|---|
@owdproject/kit-primevue | Installs PrimeVue, Tailwind CSS, configures dialog provider, and supplies PrimeVue-based UI components (e.g. explorer toolbar, file lists). |
Themes that want a PrimeVue-based look depend on kit-primevue.
| Package | Role |
|---|---|
@owdproject/module-fs | ZenFS virtual filesystem runtime and headless explorer state/stores. |
@owdproject/module-persistence | Optional Pinia persistence. |
Not vendored under packages/ in the client repo — install with desktop add. See Package linking.
runtimeConfig.public.desktop defaults via defu.Desktop.vue as the theme entry; wraps DesktopCore and core window primitives with OS-specific chrome.@owdproject/module-fs is in the Nuxt module list.dist/module.mjs via @nuxt/module-builder).defineDesktopApp (entries, commands, window models).@owdproject/core (peer) and public kit APIs — never on a specific theme.| Path | Role |
|---|---|
packages/core | Engine module and runtime |
extend/packages/* | Extension packages (kit-primevue, module-fs, module-persistence) |
desktop/ | Reference shell + desktop.config.ts |
themes/* | Local theme clones (gitignored) |
apps/* | Local app clones (gitignored) |
template/ | npm create owd output (sync via desktop template) |
docs/ | Developer documentation (separate Nuxt site) |