Build on Joystick Diagrams

Joystick Diagrams is extensible through two plugin types: parser plugins that add support for new games by reading their config files, and output plugins that deliver exported diagrams to other applications. Both use a Python API with Pydantic-powered settings that auto-generate UI controls. Parser plugins can additionally declare input routes to merge virtual-device bindings back onto the physical hardware that fed them.

Plugins are not part of the application. Each one lives in its own repository, ships its own releases, and is installed by users from the store built into the app. That means you can publish a fix the day a game patches, without waiting for a Joystick Diagrams release.

Publishing to the Store

The store reads its catalogue from plugins_manifest.json, hosted on this site. Getting listed means adding an entry to that file, which you can do by opening a pull request on the site repository or asking on Discord.

An entry needs:

  • A stable id (UUID) that never changes across versions. This is how the app tracks installs and updates.
  • name, type (parser or output), version, description, and author.
  • A download_url pointing at a release asset (a GitHub release zip works well) and its sha256. The app verifies the checksum before unpacking.
  • min_app_version if your plugin needs a specific Joystick Diagrams release, otherwise null.
  • signed: whether the archive carries a valid plugin.sig. Unsigned plugins are still listed; users approve them through the trust dialog on first run.

To publish an update, bump version, download_url and sha256 on your existing entry. Keep the id as it is, and the app will offer the update to everyone who has it installed.

Want to contribute or have questions? Join the Discord server or browse the GitHub repository.