5.2 The Manifest and the Catalogue

Applications install under /usr/share/atrium/apps/<id>/, one directory per application, shipped by ordinary packages. Nothing runs at install and nothing registers: presence is the catalogue. The session host reads the directory on every request, so an installed package's app appears on the next Toolbox load.

The id is reverse-DNS (org.peios.terminal), lowercase letters, digits, hyphens and dots, and the directory name is the id — a manifest whose id disagrees with its directory is a broken package and is skipped, with a line on the session's log.

manifest.toml:

FieldMeaning
idThe application id; equal to the directory name
nameDisplay name
descriptionOne line, shown on the tile
categoryGrouping label for the launcher; optional
iconA file in the directory, served as the icon; optional
glyph, colorA built-in stroked glyph name and chip colour, used when no icon ships
entryThe document the window loads; default index.html
[capabilities]What the app may ask the session for (§5.5)

The session host serves /apps/<id>/<file> from the application's directory, rejecting any path that could escape it, and serves the catalogue as JSON at /api/apps with each entry's entry and icon already resolved to URLs.

Two stylesheets are served to every application from the shell's own assets: /shell/tokens.css, the design system's variables plus body ground defaults — an application that links it and styles with var(--c-*) matches the shell in both themes with no colours of its own — and the SDK at /shell/sdk.js.

Edit this page