[{"data":1,"prerenderedAt":1233},["ShallowReactive",2],{"navigation_docs":3,"-apps-windows-and-commands":217,"-apps-windows-and-commands-surround":1228},[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":70,"body":219,"description":1221,"extension":1222,"links":1223,"meta":1224,"navigation":1225,"path":71,"seo":1226,"stem":72,"__hash__":1227},"docs\u002F4.apps\u002F6.windows-and-commands.md",{"type":220,"value":221,"toc":1211},"minimark",[222,249,254,732,739,758,801,813,817,828,890,903,906,917,920,977,1150,1158,1162,1176,1180,1193,1197,1207],[223,224,225,232,233,238,239,248],"p",{},[226,227,228],"strong",{},[229,230,231],"code",{},"ApplicationConfig"," (in ",[226,234,235],{},[229,236,237],{},"runtime\u002Fapp.config.ts",") describes how the desktop shell launches and manages your app. The canonical example is ",[240,241,245],"a",{"href":242,"rel":243},"https:\u002F\u002Fgithub.com\u002Fowdproject\u002Fapp-about\u002Fblob\u002Fmain\u002Fsrc\u002Fruntime\u002Fapp.config.ts",[244],"nofollow",[229,246,247],{},"app-about",".",[250,251,253],"h2",{"id":252},"full-example-about-app","Full example (About app)",[255,256,261],"pre",{"className":257,"code":258,"language":259,"meta":260,"style":260},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default {\n  id: 'org.owdproject.about',\n  title: 'About',\n  category: 'system-tools',\n  singleton: true,\n  icon: 'mdi:hexagon-multiple-outline',\n  windows: {\n    main: {\n      component: () => import('.\u002Fcomponents\u002FWindow\u002FWindowAbout.vue'),\n      resizable: false,\n      size: { width: 448, height: 240 },\n      position: { x: 400, y: 240, z: 0 },\n    },\n  },\n  entries: {\n    about: { command: 'about' },\n  },\n  commands: {\n    about: (app) => {\n      const existing = app.getFirstWindowByModel('main')\n      if (existing) {\n        existing.actions.setActive(true)\n        existing.actions.bringToFront()\n        return existing\n      }\n      return app.openWindow('main')\n    },\n  },\n}\n","ts","",[229,262,263,279,302,319,336,350,367,377,387,422,435,469,508,514,520,530,554,559,569,589,621,638,661,678,687,693,716,721,726],{"__ignoreMap":260},[264,265,268,272,275],"span",{"class":266,"line":267},"line",1,[264,269,271],{"class":270},"s7zQu","export",[264,273,274],{"class":270}," default",[264,276,278],{"class":277},"sMK4o"," {\n",[264,280,282,286,289,292,296,299],{"class":266,"line":281},2,[264,283,285],{"class":284},"swJcz","  id",[264,287,288],{"class":277},":",[264,290,291],{"class":277}," '",[264,293,295],{"class":294},"sfazB","org.owdproject.about",[264,297,298],{"class":277},"'",[264,300,301],{"class":277},",\n",[264,303,305,308,310,312,315,317],{"class":266,"line":304},3,[264,306,307],{"class":284},"  title",[264,309,288],{"class":277},[264,311,291],{"class":277},[264,313,314],{"class":294},"About",[264,316,298],{"class":277},[264,318,301],{"class":277},[264,320,322,325,327,329,332,334],{"class":266,"line":321},4,[264,323,324],{"class":284},"  category",[264,326,288],{"class":277},[264,328,291],{"class":277},[264,330,331],{"class":294},"system-tools",[264,333,298],{"class":277},[264,335,301],{"class":277},[264,337,339,342,344,348],{"class":266,"line":338},5,[264,340,341],{"class":284},"  singleton",[264,343,288],{"class":277},[264,345,347],{"class":346},"sfNiH"," true",[264,349,301],{"class":277},[264,351,353,356,358,360,363,365],{"class":266,"line":352},6,[264,354,355],{"class":284},"  icon",[264,357,288],{"class":277},[264,359,291],{"class":277},[264,361,362],{"class":294},"mdi:hexagon-multiple-outline",[264,364,298],{"class":277},[264,366,301],{"class":277},[264,368,370,373,375],{"class":266,"line":369},7,[264,371,372],{"class":284},"  windows",[264,374,288],{"class":277},[264,376,278],{"class":277},[264,378,380,383,385],{"class":266,"line":379},8,[264,381,382],{"class":284},"    main",[264,384,288],{"class":277},[264,386,278],{"class":277},[264,388,390,394,396,399,403,406,410,412,415,417,420],{"class":266,"line":389},9,[264,391,393],{"class":392},"s2Zo4","      component",[264,395,288],{"class":277},[264,397,398],{"class":277}," ()",[264,400,402],{"class":401},"spNyl"," =>",[264,404,405],{"class":277}," import",[264,407,409],{"class":408},"sTEyZ","(",[264,411,298],{"class":277},[264,413,414],{"class":294},".\u002Fcomponents\u002FWindow\u002FWindowAbout.vue",[264,416,298],{"class":277},[264,418,419],{"class":408},")",[264,421,301],{"class":277},[264,423,425,428,430,433],{"class":266,"line":424},10,[264,426,427],{"class":284},"      resizable",[264,429,288],{"class":277},[264,431,432],{"class":346}," false",[264,434,301],{"class":277},[264,436,438,441,443,446,449,451,455,458,461,463,466],{"class":266,"line":437},11,[264,439,440],{"class":284},"      size",[264,442,288],{"class":277},[264,444,445],{"class":277}," {",[264,447,448],{"class":284}," width",[264,450,288],{"class":277},[264,452,454],{"class":453},"sbssI"," 448",[264,456,457],{"class":277},",",[264,459,460],{"class":284}," height",[264,462,288],{"class":277},[264,464,465],{"class":453}," 240",[264,467,468],{"class":277}," },\n",[264,470,472,475,477,479,482,484,487,489,492,494,496,498,501,503,506],{"class":266,"line":471},12,[264,473,474],{"class":284},"      position",[264,476,288],{"class":277},[264,478,445],{"class":277},[264,480,481],{"class":284}," x",[264,483,288],{"class":277},[264,485,486],{"class":453}," 400",[264,488,457],{"class":277},[264,490,491],{"class":284}," y",[264,493,288],{"class":277},[264,495,465],{"class":453},[264,497,457],{"class":277},[264,499,500],{"class":284}," z",[264,502,288],{"class":277},[264,504,505],{"class":453}," 0",[264,507,468],{"class":277},[264,509,511],{"class":266,"line":510},13,[264,512,513],{"class":277},"    },\n",[264,515,517],{"class":266,"line":516},14,[264,518,519],{"class":277},"  },\n",[264,521,523,526,528],{"class":266,"line":522},15,[264,524,525],{"class":284},"  entries",[264,527,288],{"class":277},[264,529,278],{"class":277},[264,531,533,536,538,540,543,545,547,550,552],{"class":266,"line":532},16,[264,534,535],{"class":284},"    about",[264,537,288],{"class":277},[264,539,445],{"class":277},[264,541,542],{"class":284}," command",[264,544,288],{"class":277},[264,546,291],{"class":277},[264,548,549],{"class":294},"about",[264,551,298],{"class":277},[264,553,468],{"class":277},[264,555,557],{"class":266,"line":556},17,[264,558,519],{"class":277},[264,560,562,565,567],{"class":266,"line":561},18,[264,563,564],{"class":284},"  commands",[264,566,288],{"class":277},[264,568,278],{"class":277},[264,570,572,574,576,579,583,585,587],{"class":266,"line":571},19,[264,573,535],{"class":392},[264,575,288],{"class":277},[264,577,578],{"class":277}," (",[264,580,582],{"class":581},"sHdIc","app",[264,584,419],{"class":277},[264,586,402],{"class":401},[264,588,278],{"class":277},[264,590,592,595,598,601,604,606,609,611,613,616,618],{"class":266,"line":591},20,[264,593,594],{"class":401},"      const",[264,596,597],{"class":408}," existing",[264,599,600],{"class":277}," =",[264,602,603],{"class":408}," app",[264,605,248],{"class":277},[264,607,608],{"class":392},"getFirstWindowByModel",[264,610,409],{"class":284},[264,612,298],{"class":277},[264,614,615],{"class":294},"main",[264,617,298],{"class":277},[264,619,620],{"class":284},")\n",[264,622,624,627,629,632,635],{"class":266,"line":623},21,[264,625,626],{"class":270},"      if",[264,628,578],{"class":284},[264,630,631],{"class":408},"existing",[264,633,634],{"class":284},") ",[264,636,637],{"class":277},"{\n",[264,639,641,644,646,649,651,654,656,659],{"class":266,"line":640},22,[264,642,643],{"class":408},"        existing",[264,645,248],{"class":277},[264,647,648],{"class":408},"actions",[264,650,248],{"class":277},[264,652,653],{"class":392},"setActive",[264,655,409],{"class":284},[264,657,658],{"class":346},"true",[264,660,620],{"class":284},[264,662,664,666,668,670,672,675],{"class":266,"line":663},23,[264,665,643],{"class":408},[264,667,248],{"class":277},[264,669,648],{"class":408},[264,671,248],{"class":277},[264,673,674],{"class":392},"bringToFront",[264,676,677],{"class":284},"()\n",[264,679,681,684],{"class":266,"line":680},24,[264,682,683],{"class":270},"        return",[264,685,686],{"class":408}," existing\n",[264,688,690],{"class":266,"line":689},25,[264,691,692],{"class":277},"      }\n",[264,694,696,699,701,703,706,708,710,712,714],{"class":266,"line":695},26,[264,697,698],{"class":270},"      return",[264,700,603],{"class":408},[264,702,248],{"class":277},[264,704,705],{"class":392},"openWindow",[264,707,409],{"class":284},[264,709,298],{"class":277},[264,711,615],{"class":294},[264,713,298],{"class":277},[264,715,620],{"class":284},[264,717,719],{"class":266,"line":718},27,[264,720,513],{"class":277},[264,722,724],{"class":266,"line":723},28,[264,725,519],{"class":277},[264,727,729],{"class":266,"line":728},29,[264,730,731],{"class":277},"}\n",[250,733,735,736,419],{"id":734},"window-models-windows","Window models (",[229,737,738],{},"windows",[223,740,741,742,746,747,750,751,753,754,757],{},"Each key under ",[226,743,744],{},[229,745,738],{}," is a ",[226,748,749],{},"model"," (e.g. ",[229,752,615],{},", ",[229,755,756],{},"settings","). For each model you typically set:",[759,760,761,774],"ul",{},[762,763,764,769,770,773],"li",{},[226,765,766],{},[229,767,768],{},"component",": ",[229,771,772],{},"() => import('.\u002Fcomponents\u002FWindow\u002FWindowMain.vue')"," (dynamic import).",[762,775,776,753,781,753,786,753,791,796,797,800],{},[226,777,778],{},[229,779,780],{},"size",[226,782,783],{},[229,784,785],{},"position",[226,787,788],{},[229,789,790],{},"resizable",[226,792,793],{},[229,794,795],{},"minimizable",", … — see ",[229,798,799],{},"WindowConfig"," types in core.",[223,802,803,804,809,810,248],{},"Open a window from ",[226,805,806],{},[229,807,808],{},"commands"," with ",[229,811,812],{},"app.openWindow('main')",[250,814,816],{"id":815},"entries","Entries",[223,818,819,823,824,827],{},[226,820,821],{},[229,822,815],{}," describe ",[226,825,826],{},"how the user starts"," a flow (app menu, search, launcher):",[255,829,831],{"className":257,"code":830,"language":259,"meta":260,"style":260},"entries: {\n  main: { command: 'open' },\n  about: { command: 'about' },\n},\n",[229,832,833,842,864,885],{"__ignoreMap":260},[264,834,835,838,840],{"class":266,"line":267},[264,836,815],{"class":837},"sBMFI",[264,839,288],{"class":277},[264,841,278],{"class":277},[264,843,844,847,849,851,853,855,857,860,862],{"class":266,"line":281},[264,845,846],{"class":837},"  main",[264,848,288],{"class":277},[264,850,445],{"class":277},[264,852,542],{"class":837},[264,854,288],{"class":277},[264,856,291],{"class":277},[264,858,859],{"class":294},"open",[264,861,298],{"class":277},[264,863,468],{"class":277},[264,865,866,869,871,873,875,877,879,881,883],{"class":266,"line":304},[264,867,868],{"class":837},"  about",[264,870,288],{"class":277},[264,872,445],{"class":277},[264,874,542],{"class":837},[264,876,288],{"class":277},[264,878,291],{"class":277},[264,880,549],{"class":294},[264,882,298],{"class":277},[264,884,468],{"class":277},[264,886,887],{"class":266,"line":321},[264,888,889],{"class":277},"},\n",[223,891,892,893,898,899,248],{},"Each entry’s ",[226,894,895],{},[229,896,897],{},"command"," string must match a key under ",[226,900,901],{},[229,902,808],{},[250,904,905],{"id":808},"Commands",[223,907,908,909,913,914,248],{},"Keys under ",[226,910,911],{},[229,912,808],{}," are functions ",[229,915,916],{},"(app: IApplicationController, ...args) => void | Promise\u003Cunknown>",[223,918,919],{},"Common patterns:",[921,922,923,936],"table",{},[924,925,926],"thead",{},[927,928,929,933],"tr",{},[930,931,932],"th",{},"Pattern",[930,934,935],{},"Example",[937,938,939,950,963],"tbody",{},[927,940,941,945],{},[942,943,944],"td",{},"Open window",[942,946,947],{},[229,948,949],{},"(app) => app.openWindow('main')",[927,951,952,955],{},[942,953,954],{},"Singleton focus",[942,956,957,958,960,961],{},"Check ",[229,959,608],{},", then ",[229,962,674],{},[927,964,965,968],{},[942,966,967],{},"Close all then open",[942,969,970,973,974,976],{},[229,971,972],{},"app.closeAllWindows()"," then ",[229,975,705],{}," (playground reset)",[255,978,980],{"className":257,"code":979,"language":259,"meta":260,"style":260},"commands: {\n  open: (app) => app.openWindow('main'),\n  about: (app) => {\n    const existing = app.getFirstWindowByModel('main')\n    if (existing) {\n      existing.actions.setActive(true)\n      existing.actions.bringToFront()\n      return existing\n    }\n    return app.openWindow('main')\n  },\n},\n",[229,981,982,990,1023,1039,1064,1077,1096,1110,1116,1121,1142,1146],{"__ignoreMap":260},[264,983,984,986,988],{"class":266,"line":267},[264,985,808],{"class":837},[264,987,288],{"class":277},[264,989,278],{"class":277},[264,991,992,995,997,999,1001,1003,1005,1007,1009,1011,1013,1015,1017,1019,1021],{"class":266,"line":281},[264,993,994],{"class":837},"  open",[264,996,288],{"class":277},[264,998,578],{"class":277},[264,1000,582],{"class":581},[264,1002,419],{"class":277},[264,1004,402],{"class":401},[264,1006,603],{"class":408},[264,1008,248],{"class":277},[264,1010,705],{"class":392},[264,1012,409],{"class":284},[264,1014,298],{"class":277},[264,1016,615],{"class":294},[264,1018,298],{"class":277},[264,1020,419],{"class":284},[264,1022,301],{"class":277},[264,1024,1025,1027,1029,1031,1033,1035,1037],{"class":266,"line":304},[264,1026,868],{"class":837},[264,1028,288],{"class":277},[264,1030,578],{"class":277},[264,1032,582],{"class":581},[264,1034,419],{"class":277},[264,1036,402],{"class":401},[264,1038,278],{"class":277},[264,1040,1041,1044,1046,1048,1050,1052,1054,1056,1058,1060,1062],{"class":266,"line":321},[264,1042,1043],{"class":401},"    const",[264,1045,597],{"class":408},[264,1047,600],{"class":277},[264,1049,603],{"class":408},[264,1051,248],{"class":277},[264,1053,608],{"class":392},[264,1055,409],{"class":284},[264,1057,298],{"class":277},[264,1059,615],{"class":294},[264,1061,298],{"class":277},[264,1063,620],{"class":284},[264,1065,1066,1069,1071,1073,1075],{"class":266,"line":338},[264,1067,1068],{"class":270},"    if",[264,1070,578],{"class":284},[264,1072,631],{"class":408},[264,1074,634],{"class":284},[264,1076,637],{"class":277},[264,1078,1079,1082,1084,1086,1088,1090,1092,1094],{"class":266,"line":352},[264,1080,1081],{"class":408},"      existing",[264,1083,248],{"class":277},[264,1085,648],{"class":408},[264,1087,248],{"class":277},[264,1089,653],{"class":392},[264,1091,409],{"class":284},[264,1093,658],{"class":346},[264,1095,620],{"class":284},[264,1097,1098,1100,1102,1104,1106,1108],{"class":266,"line":369},[264,1099,1081],{"class":408},[264,1101,248],{"class":277},[264,1103,648],{"class":408},[264,1105,248],{"class":277},[264,1107,674],{"class":392},[264,1109,677],{"class":284},[264,1111,1112,1114],{"class":266,"line":379},[264,1113,698],{"class":270},[264,1115,686],{"class":408},[264,1117,1118],{"class":266,"line":389},[264,1119,1120],{"class":277},"    }\n",[264,1122,1123,1126,1128,1130,1132,1134,1136,1138,1140],{"class":266,"line":424},[264,1124,1125],{"class":270},"    return",[264,1127,603],{"class":408},[264,1129,248],{"class":277},[264,1131,705],{"class":392},[264,1133,409],{"class":284},[264,1135,298],{"class":277},[264,1137,615],{"class":294},[264,1139,298],{"class":277},[264,1141,620],{"class":284},[264,1143,1144],{"class":266,"line":437},[264,1145,519],{"class":277},[264,1147,1148],{"class":266,"line":471},[264,1149,889],{"class":277},[223,1151,1152,1153,248],{},"Invoke from code via ",[226,1154,1155],{},[229,1156,1157],{},"useApplicationManager().execAppCommand(appId, 'about')",[250,1159,1161],{"id":1160},"singleton","Singleton",[223,1163,1164,1165,1170,1171,1175],{},"With ",[226,1166,1167],{},[229,1168,1169],{},"singleton: true",", the shell treats the app as a single instance. Combine with command logic that reuses an existing window instead of opening duplicates (see About ",[226,1172,1173],{},[229,1174,549],{}," command above).",[250,1177,1179],{"id":1178},"terminal-commands-optional","Terminal commands (optional)",[223,1181,1182,1183,1188,1189,1192],{},"If you expose text commands to the OWD shell, the core wires ",[226,1184,1185],{},[229,1186,1187],{},"TerminalManager"," to registered apps. Register command names during app init (see ",[229,1190,1191],{},"ApplicationController"," \u002F application store).",[250,1194,1196],{"id":1195},"related","Related",[759,1198,1199,1203],{},[762,1200,1201],{},[240,1202,56],{"href":57},[762,1204,1205],{},[240,1206,61],{"href":62},[1208,1209,1210],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}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);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":260,"searchDepth":281,"depth":281,"links":1212},[1213,1214,1216,1217,1218,1219,1220],{"id":252,"depth":281,"text":253},{"id":734,"depth":281,"text":1215},"Window models (windows)",{"id":815,"depth":281,"text":816},{"id":808,"depth":281,"text":905},{"id":1160,"depth":281,"text":1161},{"id":1178,"depth":281,"text":1179},{"id":1195,"depth":281,"text":1196},"Window models, entries, commands, singletons, and ApplicationController.","md",null,{},{"icon":73},{"title":70,"description":1221},"LWSorTmQqzoOGpkQSyv5jCG3fz1VMmWc9cUIduRDnnE",[1229,1231],{"title":65,"path":66,"stem":67,"description":1230,"icon":68,"children":-1},"Register plugins in app modules vs playground launch plugins — naming, dependsOn, and validation.",{"title":75,"path":76,"stem":77,"description":1232,"icon":78,"children":-1},"Develop an app module with a dedicated mini Nuxt app — deps, launch plugins, validation.",1782171655060]