Skip to main content

App Manifests

This page gives you a reference for all the supported app.manifest.json5 properties.

tip

JSON5 doesn't support schemas, but you can use this schema with JSONC or with JSON

A manifest file can define a single app, or an array of app definitions. The name property is required for each app.

A lot of this logic is further explained in the internal apps manager's manifest normalization documentation.

General

PropertyTypeDescription
nameString (required)Friendly name of your app. Can include spaces, capital letters, etc.
displayNameStringThe title of the app's desktop icon. Defaults to the app's name.
slugStringUnique identifier of your app. Should be lowercase and not include spaces, etc. If not present, it will take the name, apply kebab case, and assign it as the app slug.
commandStringThe command used in the terminal to open this app. If omitted, a command name is auto-generated based on the app's name.
categoriesArray<String>A list of categories the app belongs to. Currently unused.
pictoPictoA picto to be shown as the dialog's icon.
catalogableBooleanWhether the app appears in the start menu. Default is true.
installableBooleanHoldover from the Windows93 v3 beta where apps could be installed. Currently has no effect.
terminalBooleanPuts the app in a "commands" section of the terminal's help command. Default is false.
soloBooleanWhether the app can only have one instance. Default is false.
multifileBooleanAccepts multiple files to be opened at once. Currently no apps use this and it is untested. Default is false.
multipleBooleanAllows multiple command line parameters. If not true, each command line parameter gets launched as a separate app. Default is false.
suspendIntensiveTasksBooleanUse a low-power mode while the app is open. Default is false.
zoomEnum: 1, 2On emulator apps, set whether to start the zoom at 100% or 200%. Default is 1.
animationBooleanWhether the window has enter and exit animations. Default is false.
optionsObjectPasses default command arguments into the app.

Entry points

PropertyTypeDescription
modulePathA relative path to a .js module from the manifest's folder.
documentPathA relative path to an .html document from the manifest's folder which will be iframed.

Icons

PropertyTypeDescription
iconsArrayA list of app icons distinguished by size. By default icons are automatically searched in the root directory, where [ext] is png, gif, svg, or jpg: icon-32.[ext], icon-16.[ext], icons/32x32/icon.[ext], icons/16x16/icon.[ext]. Each item can be a string (interpreted as a 32x32 icon) or an object with src and sizes.
iconPathShorthand for a single 32x32 icon in manifest.icons. A relative path to a 32x32 icon.

Icon list item:

PropertyTypeDescription
srcPath (required)A relative path to an icon.
sizesEnum: 16x16, 32x32The resolution of the icon. Default is 32x32.

About / Help

about, description, license, and authors each cause a ? button to be shown, which opens a help dialog.

PropertyTypeDescription
aboutPathA relative path to an .md document that displays when a user clicks the ? icon.
descriptionMarkdownText describing the app. Will show in the help dialog.
licenseStringLicense of the app. Will show in the help dialog.
authorsArrayA list of authors for the app. Each item has name, web, and description (description is currently unused and bugged).

Files (decode/encode)

Apps which can open files use decode; apps which can save files use encode. By default, encode uses the app's decode options.

PropertyTypeDescription
decodeObjectOptions for what types of files the app can open.
encodeObjectOptions for what types of files the app can save.

Both accept:

PropertyTypeDescription
startInPathA path relative to the user's home directory of where to start when opening the file explorer.
excludeAcceptAllOptionBooleanWhether to have the "All Files" filter option. By default shown on decode and hidden on encode.
types (required)ArrayThe types of files the app can open.

Each types item:

PropertyTypeDescription
acceptObject/String/ArrayEither a map from mimetypes to their extensions, a lone mimetype, or a list of mimetypes.
descriptionStringA title for the filename shown in the dialog picker.
iconsArrayA list of icon sizes for the file type. Each icon has sizes (16x16/32x32) and src (in the .../[size]/[type]/[name].[ext] format, as /42/assets/icons/ symlinks to it).

System tray

PropertyTypeDescription
trayBooleanMarks the app as a tray app, calling the module's renderTray function at startup to put it in the system tray. Default is false.

Audio

PropertyTypeDescription
hasAudioInputBooleanMarks an app as an audio app (apps which take in audio input). Default is false.
hasAudioOutputBooleanSet to false to prevent audio apps from being added to the mixer. No effect on apps without audio input. Default is true.
hideBypassButtonBooleanHides the bypass button on audio apps. Default is false.
hideAudioIOButtonBooleanHides the audio IO button on audio apps. Default is false.

Window

These options get passed into the app's dialog window.

PropertyTypeDescription
dialogObjectOptions to be passed into the dialog window. See the dialog documentation.
xNumberThe default X position of the window in pixels.
yNumberThe default Y position of the window in pixels.
widthNumberThe default width of the window in pixels.
heightNumberThe default height of the window in pixels.
modalBooleanIf true, the window is rendered on top of the whole OS and darkens the background. Default is false.
stealFocusBooleanIf false, the window will not be automatically focused when opening. Default is true.
clearBooleanIf true, the window will not have a border. Default is false.
insetBooleanIf true, the window will have an inset border around the content. Default is false.
headerPlanA Plan rendered above the window's content.
footerPlanA Plan rendered below the window's content.
resizableBooleanIf false, the window cannot be resized via the edges (still maximizable). Default is true.
maximizableBooleanIf false, the window will not have the maximize button. Default is true.
minimizableBooleanIf false, the window will not have the minimize button. Default is true.
maximizedBoolean/"{{pointer.isTouch}}"Whether the window will be maximized. If omitted it will be unmaximized but will save when the app is closed and reopened. The special "{{pointer.isTouch}}" value maximizes the window on touchscreen devices. Default is false.
dockableBooleanIf false, the window will not appear in the taskbar. Default is true.
skipSaveArray<String>/BooleanA list of dialog properties to not save on disk (e.g. x, y, width, height). If true, no properties get saved.

Dialog buttons

PropertyTypeDescription
agreeBoolean/StringThe message for the agree button. If true, it becomes "Ok". Default is false.
beforeAgreePlanA Plan rendered before the agree button.
afterAgreePlanA Plan rendered after the agree button.
declineBoolean/StringThe message for the decline button. If true, it becomes "Cancel". Default is false.
beforeDeclinePlanA Plan rendered before the decline button.
afterDeclinePlanA Plan rendered after the decline button.