Skip to content

Addon repositories

github-actions[bot] edited this page Sep 15, 2026 · 4 revisions

The format WM Keyboard uses to install themes, layouts, dictionaries, emoji keyword packs, snippets, Espanso packs, sticker packs, icon packs, fonts, emoji fonts, key sounds, sound packs, plugins and vocabulary packs from a URL the user pastes in.

  • Repository format The published spec: what a repository author writes.
  • JSON Schema Draft 2020-12 schema for wmkeyboard-repo.json. Point $schema at it for IDE validation.
  • Client design How this app fetches, verifies and installs an addon, on the client side.

For the user-facing view of the same system, see the Addons section.

Where the canonical copies live

The spec and schema are mirrored from the sample repository, under its own docs/addons/.

That copy is canonical, because the schema's $id and the "$schema" key in every published manifest already point at its raw.githubusercontent.com URL. Repointing them would break manifests in the wild. Edit there first, then port the change here.

The mirror is adapted, not byte-identical

The pages in this section are the Starlight presentation of the upstream Markdown (frontmatter, components, site links). When upstream changes, port the content of the diff by hand rather than copying files over these. The schema itself is still a straight copy:

cp ~/Work/wmkeyboard-addon-repository/docs/addons/wmkeyboard-repo.schema.json docs/public/schemas/

The mirror exists so the spec is readable alongside the code that implements it (core/addons/), and so a change to the client and a change to the spec can land in one commit.

Implementation

Client code lives in :core:addons (data layer) and :feature:addons (install/reconcile/download). The install dispatch table in Client design §5 maps each addon type to the importer that handles it. Most of those importers already existed for local file import.

Clone this wiki locally