Themes

Pages and boot flow

start/boot routes, desktop lifecycle, and system composables.

Dedicated pages

Many themes expose Nuxt pages under runtime/pages/, for example:

  • start: initial / “power on” screen;
  • boot: sequence before the full desktop.

theme-win95 is the reference for boot/start flow. The Nuxt router exposes them as normal routes; the theme controls navigation (navigateTo) and shortcuts.

Nova and Paper typically skip boot pages and land directly on Desktop.

Theme composables

Group logic under runtime/composables/, e.g.:

  • useSystemLifecycle: transitions between off / boot / desktop;
  • useSystemBar: taskbar state;
  • useFsController: optional filesystem integration.

These names are examples: for future shared patterns prefer neutral names (usePrimaryBar) when extracting a theme kit (see Architecture overview).

i18n

Register theme strings with i18n:registerModule in the module setup (langDir resolved via createResolver). Keep keys stable for boot and shell messages.

Integration with desktop app.vue

The desktop project has a minimal app.vue that mounts the theme root (e.g. <Desktop />). The theme must expose that component via global registration from addComponentsDir. See Theme anatomy — Desktop.vue.

Boot pages are routes, not a replacement for Desktop.vue — after boot completes, navigation typically reaches the main shell.