[{"data":1,"prerenderedAt":870},["ShallowReactive",2],{"navigation_docs":3,"-architecture-overview":217,"-architecture-overview-surround":865},[4,25,41,84,126,165,201],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":24},"Overview","i-lucide-house","\u002Fgetting-started","1.getting-started",[10,14,19],{"title":11,"path":12,"stem":13,"icon":6},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F2.introduction",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F3.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Project structure","\u002Fgetting-started\u002Fproject-structure","1.getting-started\u002F4.project-structure","i-lucide-folder-tree",false,{"title":26,"icon":27,"path":28,"stem":29,"children":30,"page":24},"Architecture","i-lucide-cpu","\u002Farchitecture","3.architecture",[31,36],{"title":32,"path":33,"stem":34,"icon":35},"Core, themes, and apps","\u002Farchitecture\u002Foverview","3.architecture\u002F1.overview","i-lucide-layers",{"title":37,"path":38,"stem":39,"icon":40},"Kits and extension modules","\u002Farchitecture\u002Fkits","3.architecture\u002F3.kits","i-lucide-puzzle",{"title":42,"icon":43,"path":44,"stem":45,"children":46,"page":24},"Apps","i-lucide-app-window","\u002Fapps","4.apps",[47,51,55,60,64,69,74,79],{"title":5,"path":48,"stem":49,"icon":50},"\u002Fapps\u002Foverview","4.apps\u002F1.overview","i-lucide-info",{"title":52,"path":53,"stem":54,"icon":23},"Package layout","\u002Fapps\u002Fpackage-layout","4.apps\u002F2.package-layout",{"title":56,"path":57,"stem":58,"icon":59},"Create from scratch","\u002Fapps\u002Fcreate-from-scratch","4.apps\u002F3.create-from-scratch","i-lucide-list-checks",{"title":61,"path":62,"stem":63,"icon":40},"Module and runtime","\u002Fapps\u002Fmodule-and-runtime","4.apps\u002F4.module-and-runtime",{"title":65,"path":66,"stem":67,"icon":68},"Plugins","\u002Fapps\u002Fplugins","4.apps\u002F5.plugins","i-lucide-plug",{"title":70,"path":71,"stem":72,"icon":73},"Windows and commands","\u002Fapps\u002Fwindows-and-commands","4.apps\u002F6.windows-and-commands","i-lucide-layout-panel-top",{"title":75,"path":76,"stem":77,"icon":78},"Playground","\u002Fapps\u002Fplayground","4.apps\u002F7.playground","i-lucide-flask-conical",{"title":80,"path":81,"stem":82,"icon":83},"Build and publish","\u002Fapps\u002Fbuild-and-publish","4.apps\u002F8.build-and-publish","i-lucide-package",{"title":85,"icon":86,"path":87,"stem":88,"children":89,"page":24},"Themes","i-lucide-palette","\u002Fthemes","5.themes",[90,93,98,102,106,111,116,121],{"title":5,"path":91,"stem":92,"icon":50},"\u002Fthemes\u002Foverview","5.themes\u002F1.overview",{"title":94,"path":95,"stem":96,"icon":97},"Theme anatomy","\u002Fthemes\u002Ftheme-anatomy","5.themes\u002F2.theme-anatomy","i-lucide-component",{"title":99,"path":100,"stem":101},"Create From Scratch","\u002Fthemes\u002Fcreate-from-scratch","5.themes\u002F3.create-from-scratch",{"title":103,"path":104,"stem":105,"icon":68},"Theme plugins","\u002Fthemes\u002Fplugins","5.themes\u002F4.plugins",{"title":107,"path":108,"stem":109,"icon":110},"Styling and Tailwind","\u002Fthemes\u002Fstyling-and-tailwind","5.themes\u002F5.styling-and-tailwind","i-lucide-brush",{"title":112,"path":113,"stem":114,"icon":115},"Pages and boot flow","\u002Fthemes\u002Fpages-and-boot-flow","5.themes\u002F6.pages-and-boot-flow","i-lucide-power",{"title":117,"path":118,"stem":119,"icon":120},"Theme and optional modules","\u002Fthemes\u002Ftheme-and-optional-modules","5.themes\u002F7.theme-and-optional-modules","i-lucide-link",{"title":122,"path":123,"stem":124,"icon":125},"Window chrome and nav buttons","\u002Fthemes\u002Fwindow-chrome-and-nav-buttons","5.themes\u002F8.window-chrome-and-nav-buttons","i-lucide-square-mouse-pointer",{"title":127,"icon":128,"path":129,"stem":130,"children":131,"page":24},"Client & CLI","i-lucide-terminal","\u002Fsetup","6.setup",[132,136,141,146,151,156,161],{"title":133,"path":134,"stem":135,"icon":128},"desktop CLI","\u002Fsetup\u002Fdesktop-cli","6.setup\u002F1.desktop-cli",{"title":137,"path":138,"stem":139,"icon":140},"Package linking","\u002Fsetup\u002Fpackage-linking","6.setup\u002F2.package-linking","i-lucide-link-2",{"title":142,"path":143,"stem":144,"icon":145},"Monorepo and workspace","\u002Fsetup\u002Fmonorepo-workspace","6.setup\u002F3.monorepo-workspace","i-lucide-blocks",{"title":147,"path":148,"stem":149,"icon":150},"desktop.config.ts","\u002Fsetup\u002Fdesktop-config","6.setup\u002F4.desktop-config","i-lucide-file-code",{"title":152,"path":153,"stem":154,"icon":155},"Migrate themes, apps, and modules (3.3.2)","\u002Fsetup\u002Fmigrate-packages-3.3.2","6.setup\u002F5.migrate-packages-3.3.2","i-lucide-arrow-right-left",{"title":157,"path":158,"stem":159,"icon":160},"Migrate themes, apps, and modules (3.4)","\u002Fsetup\u002Fmigrate-packages-3.4","6.setup\u002F6.migrate-packages-3.4","i-lucide-arrow-up-right",{"title":162,"path":163,"stem":164},"Troubleshooting","\u002Fsetup\u002Ftroubleshooting","6.setup\u002F7.troubleshooting",{"title":166,"icon":167,"path":168,"stem":169,"children":170,"page":24},"Internals","i-lucide-book-open","\u002Finternals","7.internals",[171,176,181,186,191,196],{"title":172,"path":173,"stem":174,"icon":175},"Boot sequence","\u002Finternals\u002Fboot-sequence","7.internals\u002F1.boot-sequence","i-lucide-list-ordered",{"title":177,"path":178,"stem":179,"icon":180},"Stores and composables","\u002Finternals\u002Fstores-and-composables","7.internals\u002F2.stores-and-composables","i-lucide-database",{"title":182,"path":183,"stem":184,"icon":185},"Core components","\u002Finternals\u002Fcore-components","7.internals\u002F3.core-components","i-lucide-layout-grid",{"title":187,"path":188,"stem":189,"icon":190},"Dialog provider","\u002Finternals\u002Fdialog-provider","7.internals\u002F4.dialog-provider","i-lucide-message-square",{"title":192,"path":193,"stem":194,"icon":195},"Kernel contract","\u002Finternals\u002Fkernel-contract","7.internals\u002F5.kernel-contract","i-lucide-shield-check",{"title":197,"path":198,"stem":199,"icon":200},"Shell identity","\u002Finternals\u002Fshell-identity","7.internals\u002F6.shell-identity","i-lucide-user",{"title":202,"icon":203,"path":204,"stem":205,"children":206,"page":24},"Reference","i-lucide-book-marked","\u002Freference","8.reference",[207,212],{"title":208,"path":209,"stem":210,"icon":211},"Glossary","\u002Freference\u002Fglossary","8.reference\u002F1.glossary","i-lucide-book-a",{"title":213,"path":214,"stem":215,"icon":216},"Ecosystem","\u002Freference\u002Fuseful-links","8.reference\u002F2.useful-links","i-lucide-external-link",{"id":218,"title":32,"body":219,"description":856,"extension":857,"links":858,"meta":859,"navigation":860,"path":33,"seo":861,"stem":34,"__hash__":864},"docs\u002F3.architecture\u002F1.overview.md",{"type":220,"value":221,"toc":847},"minimark",[222,235,405,413,525,532,547,551,583,590,594,630,647,651,686,690,722,726,843],[223,224,225,226,230,231,234],"p",{},"Open Web Desktop (",[227,228,229],"strong",{},"OWD",") is intentionally split into layers. Keeping them separate is what makes “GNOME vs Windows 95 vs Nova” a ",[227,232,233],{},"theme problem",", not a rewrite of your apps.",[236,237,242],"pre",{"className":238,"code":239,"language":240,"meta":241,"style":241},"language-mermaid shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","flowchart TB\n  subgraph consumer [Your desktop project]\n    config[desktop.config.ts]\n    nuxt[nuxt.config.ts]\n  end\n  subgraph engine [Engine]\n    core[\"@owdproject\u002Fcore\"]\n  end\n  subgraph kits [Optional kits]\n    kitPrimeVue[\"@owdproject\u002Fkit-primevue\"]\n  end\n  subgraph external [External modules]\n    modFs[\"@owdproject\u002Fmodule-fs\"]\n    modPersist[\"@owdproject\u002Fmodule-persistence\"]\n  end\n  subgraph presentation [Presentation]\n    theme[Theme module]\n    apps[App modules]\n  end\n  config --> core\n  core --> theme\n  core --> modFs\n  core --> modPersist\n  theme --> kitPrimeVue\n  theme --> modFs\n  kitPrimeVue --> modFs\n  core --> apps\n","mermaid","",[243,244,245,253,259,265,271,277,283,289,294,300,306,311,317,323,329,334,340,346,352,357,363,369,375,381,387,393,399],"code",{"__ignoreMap":241},[246,247,250],"span",{"class":248,"line":249},"line",1,[246,251,252],{},"flowchart TB\n",[246,254,256],{"class":248,"line":255},2,[246,257,258],{},"  subgraph consumer [Your desktop project]\n",[246,260,262],{"class":248,"line":261},3,[246,263,264],{},"    config[desktop.config.ts]\n",[246,266,268],{"class":248,"line":267},4,[246,269,270],{},"    nuxt[nuxt.config.ts]\n",[246,272,274],{"class":248,"line":273},5,[246,275,276],{},"  end\n",[246,278,280],{"class":248,"line":279},6,[246,281,282],{},"  subgraph engine [Engine]\n",[246,284,286],{"class":248,"line":285},7,[246,287,288],{},"    core[\"@owdproject\u002Fcore\"]\n",[246,290,292],{"class":248,"line":291},8,[246,293,276],{},[246,295,297],{"class":248,"line":296},9,[246,298,299],{},"  subgraph kits [Optional kits]\n",[246,301,303],{"class":248,"line":302},10,[246,304,305],{},"    kitPrimeVue[\"@owdproject\u002Fkit-primevue\"]\n",[246,307,309],{"class":248,"line":308},11,[246,310,276],{},[246,312,314],{"class":248,"line":313},12,[246,315,316],{},"  subgraph external [External modules]\n",[246,318,320],{"class":248,"line":319},13,[246,321,322],{},"    modFs[\"@owdproject\u002Fmodule-fs\"]\n",[246,324,326],{"class":248,"line":325},14,[246,327,328],{},"    modPersist[\"@owdproject\u002Fmodule-persistence\"]\n",[246,330,332],{"class":248,"line":331},15,[246,333,276],{},[246,335,337],{"class":248,"line":336},16,[246,338,339],{},"  subgraph presentation [Presentation]\n",[246,341,343],{"class":248,"line":342},17,[246,344,345],{},"    theme[Theme module]\n",[246,347,349],{"class":248,"line":348},18,[246,350,351],{},"    apps[App modules]\n",[246,353,355],{"class":248,"line":354},19,[246,356,276],{},[246,358,360],{"class":248,"line":359},20,[246,361,362],{},"  config --> core\n",[246,364,366],{"class":248,"line":365},21,[246,367,368],{},"  core --> theme\n",[246,370,372],{"class":248,"line":371},22,[246,373,374],{},"  core --> modFs\n",[246,376,378],{"class":248,"line":377},23,[246,379,380],{},"  core --> modPersist\n",[246,382,384],{"class":248,"line":383},24,[246,385,386],{},"  theme --> kitPrimeVue\n",[246,388,390],{"class":248,"line":389},25,[246,391,392],{},"  theme --> modFs\n",[246,394,396],{"class":248,"line":395},26,[246,397,398],{},"  kitPrimeVue --> modFs\n",[246,400,402],{"class":248,"line":401},27,[246,403,404],{},"  core --> apps\n",[406,407,409,410],"h2",{"id":408},"the-engine-owdprojectcore","The engine: ",[243,411,412],{},"@owdproject\u002Fcore",[414,415,416,460,467,490,507],"ul",{},[417,418,419,420,424,425,430,431,434,435,447,448,453,454,459],"li",{},"Loads ",[227,421,422],{},[243,423,147],{}," (legacy ",[227,426,427],{},[243,428,429],{},"owd.config.ts","), validates and ",[227,432,433],{},"splits"," config: ",[227,436,437,440,441,440,444],{},[243,438,439],{},"theme"," \u002F ",[243,442,443],{},"modules",[243,445,446],{},"apps"," drive ",[227,449,450],{},[243,451,452],{},"installModule","; shell keys merge into ",[227,455,456],{},[243,457,458],{},"runtimeConfig.public.desktop"," only.",[417,461,462,463,466],{},"Bootstrap order: ",[227,464,465],{},"Pinia → theme → modules → apps",".",[417,468,469,470,473,474,479,480,479,485,466],{},"Owns ",[227,471,472],{},"window\u002Fapplication lifecycle",", workspace overview, z-order, and composables such as ",[227,475,476],{},[243,477,478],{},"useApplicationManager",", ",[227,481,482],{},[243,483,484],{},"useDesktopManager",[227,486,487],{},[243,488,489],{},"useWorkspaceManager",[417,491,492,493,496,497,479,500,479,503,506],{},"Ships ",[227,494,495],{},"Core Vue components"," (",[243,498,499],{},"DesktopCore",[243,501,502],{},"DesktopWindow",[243,504,505],{},"DesktopApplicationRender",", …): behaviour and slots, not pixel-perfect OS chrome.",[417,508,509,510,513,514,519,520,466],{},"Does ",[227,511,512],{},"not"," ship filesystem explorer UI or ZenFS — those live in ",[227,515,516],{},[243,517,518],{},"module-fs"," and ",[227,521,522],{},[243,523,524],{},"kit-primevue",[223,526,527,528,531],{},"If config is missing or invalid, core ",[227,529,530],{},"fails fast"," with an explicit error.",[223,533,534,535,540,541,546],{},"Public contract: ",[227,536,537],{},[538,539,192],"a",{"href":193}," (also ",[227,542,543],{},[243,544,545],{},"DESKTOP_KERNEL.md"," in the core package).",[406,548,550],{"id":549},"kits-shared-optional","Kits (shared, optional)",[552,553,554,567],"table",{},[555,556,557],"thead",{},[558,559,560,564],"tr",{},[561,562,563],"th",{},"Package",[561,565,566],{},"Role",[568,569,570],"tbody",{},[558,571,572,580],{},[573,574,575],"td",{},[227,576,577],{},[243,578,579],{},"@owdproject\u002Fkit-primevue",[573,581,582],{},"Installs PrimeVue, Tailwind CSS, configures dialog provider, and supplies PrimeVue-based UI components (e.g. explorer toolbar, file lists).",[223,584,585,586,466],{},"Themes that want a PrimeVue-based look depend on ",[227,587,588],{},[243,589,524],{},[406,591,593],{"id":592},"extension-modules-external-npm","Extension modules (external npm)",[552,595,596,604],{},[555,597,598],{},[558,599,600,602],{},[561,601,563],{},[561,603,566],{},[568,605,606,618],{},[558,607,608,615],{},[573,609,610],{},[227,611,612],{},[243,613,614],{},"@owdproject\u002Fmodule-fs",[573,616,617],{},"ZenFS virtual filesystem runtime and headless explorer state\u002Fstores.",[558,619,620,627],{},[573,621,622],{},[227,623,624],{},[243,625,626],{},"@owdproject\u002Fmodule-persistence",[573,628,629],{},"Optional Pinia persistence.",[223,631,632,633,638,639,644,645,466],{},"Not vendored under ",[227,634,635],{},[243,636,637],{},"packages\u002F"," in the client repo — install with ",[227,640,641],{},[243,642,643],{},"desktop add",". See ",[538,646,137],{"href":138},[406,648,650],{"id":649},"themes-pluggable-desktop-environment","Themes (pluggable desktop environment)",[414,652,653,664,678],{},[417,654,655,656,660,661,466],{},"Nuxt module: components, styles, boot flow, ",[227,657,658],{},[243,659,458],{}," defaults via ",[227,662,663],{},"defu",[417,665,666,667,672,673,677],{},"Exposes ",[227,668,669],{},[243,670,671],{},"Desktop.vue"," as the theme entry; wraps ",[227,674,675],{},[243,676,499],{}," and core window primitives with OS-specific chrome.",[417,679,680,681,685],{},"Conditionally loads explorer UI when ",[227,682,683],{},[243,684,614],{}," is in the Nuxt module list.",[406,687,689],{"id":688},"apps-nuxt-modules-per-program","Apps (Nuxt modules per program)",[414,691,692,705,714],{},[417,693,694,695,698,699,704],{},"Published packages (",[243,696,697],{},"dist\u002Fmodule.mjs"," via ",[227,700,701],{},[243,702,703],{},"@nuxt\u002Fmodule-builder",").",[417,706,707,708,713],{},"Register with ",[227,709,710],{},[243,711,712],{},"defineDesktopApp"," (entries, commands, window models).",[417,715,716,717,721],{},"Must depend only on ",[227,718,719],{},[243,720,412],{}," (peer) and public kit APIs — never on a specific theme.",[406,723,725],{"id":724},"repository-map-client-monorepo","Repository map (client monorepo)",[552,727,728,737],{},[555,729,730],{},[558,731,732,735],{},[561,733,734],{},"Path",[561,736,566],{},[568,738,739,751,771,787,799,811,831],{},[558,740,741,748],{},[573,742,743],{},[227,744,745],{},[243,746,747],{},"packages\u002Fcore",[573,749,750],{},"Engine module and runtime",[558,752,753,760],{},[573,754,755],{},[227,756,757],{},[243,758,759],{},"extend\u002Fpackages\u002F*",[573,761,762,763,479,765,479,767,770],{},"Extension packages (",[243,764,524],{},[243,766,518],{},[243,768,769],{},"module-persistence",")",[558,772,773,780],{},[573,774,775],{},[227,776,777],{},[243,778,779],{},"desktop\u002F",[573,781,782,783],{},"Reference shell + ",[227,784,785],{},[243,786,147],{},[558,788,789,796],{},[573,790,791],{},[227,792,793],{},[243,794,795],{},"themes\u002F*",[573,797,798],{},"Local theme clones (gitignored)",[558,800,801,808],{},[573,802,803],{},[227,804,805],{},[243,806,807],{},"apps\u002F*",[573,809,810],{},"Local app clones (gitignored)",[558,812,813,820],{},[573,814,815],{},[227,816,817],{},[243,818,819],{},"template\u002F",[573,821,822,825,826,770],{},[243,823,824],{},"npm create owd"," output (sync via ",[227,827,828],{},[243,829,830],{},"desktop template",[558,832,833,840],{},[573,834,835],{},[227,836,837],{},[243,838,839],{},"docs\u002F",[573,841,842],{},"Developer documentation (separate Nuxt site)",[844,845,846],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":241,"searchDepth":255,"depth":255,"links":848},[849,851,852,853,854,855],{"id":408,"depth":255,"text":850},"The engine: @owdproject\u002Fcore",{"id":549,"depth":255,"text":550},{"id":592,"depth":255,"text":593},{"id":649,"depth":255,"text":650},{"id":688,"depth":255,"text":689},{"id":724,"depth":255,"text":725},"How Open Web Desktop is layered so you can ship any “OS” UI while staying agnostic at the engine level.","md",null,{},{"icon":35},{"title":862,"description":863},"Architecture overview","OWD core vs kits vs themes vs apps; extension modules and docs-first DX.","seCWTgdYhX-2micay28CskoVynYK1ZOQfYKn1Io7ZHc",[866,868],{"title":20,"path":21,"stem":22,"description":867,"icon":23,"children":-1},"Client monorepo, desktop project, app and theme packages.",{"title":37,"path":38,"stem":39,"description":869,"icon":40,"children":-1},"core shell\u002Fexplorer, kit-primevue, module-fs, and deprecated kits.",1782171655224]