Skip to content

Building & Deploying

Plugin file format

A .plugin file is a ZIP archive containing your QML sources, assets, and a plugin.json manifest. AMC extracts and loads the contents at runtime.

MyPlugin/
├── plugin.json          ← required metadata
├── build.sh             ← optional build script
├── src/
│   ├── MyPluginData.qml
│   ├── MyPluginSettings.qml
│   ├── MyPluginUpperFlyView.qml
│   ├── MyPluginMenuItemButton.qml
│   └── MyPluginMenuItemView.qml
├── img/                 ← optional assets
│   └── icon.svg
└── lib/                 ← optional JS modules
    └── helpers.js

Building with a script

A build script automates the packaging step. Here is a typical build.sh:

#!/bin/bash
PLUGIN_NAME="MyPlugin"
OUTPUT_FILE="${PLUGIN_NAME}.plugin"

zip -r "${OUTPUT_FILE}" plugin.json src/ img/

Including additional file types

If you use JavaScript modules or other assets, make sure they are included in the zip command. For example, add lib/ to the argument list.

Run the script:

chmod +x build.sh
./build.sh

Building manually

cd MyPlugin
zip -r MyPlugin.plugin plugin.json src/ img/

Omit directories that don't exist (e.g., img/ if you have no images).

What to exclude

Do not include in the archive:

  • build.sh and other dev scripts
  • .git/ directory
  • IDE configuration files
  • node_modules/ or other dependency folders

Asset paths

Reference bundled assets with relative paths wrapped in Qt.resolvedUrl(...), which resolves them against the QML file's own location. Since QML files live in src/ and images in img/, a typical path looks like:

icon.source: Qt.resolvedUrl("../img/icon.svg")

Installing a plugin

Copy the .plugin file into the Auterion Mission Control/Plugins folder:

cp MyPlugin.plugin ~/Documents/"Auterion Mission Control"/Plugins/
Copy-Item MyPlugin.plugin "$env:USERPROFILE\Documents\Auterion Mission Control\Plugins\"

AMC watches this folder. Adding a file loads the plugin; removing it unloads it. No restart is required.

Uninstalling

Delete the .plugin file from the Plugins folder. AMC will unload the plugin automatically.

Iterating during development

During development, the typical workflow is:

  1. Edit QML files.
  2. Rebuild the .plugin archive.
  3. Copy it into the Plugins folder (overwriting the previous version).
  4. Restart AMC to pick up the changes.

Known issue: plugin updates don't hot-reload

AMC can load and unload plugins while running, but it does not reliably pick up code changes to an already-loaded plugin. If you update a plugin, restart AMC to see the changes. This will be fixed in a future update.

Tip

You can keep a terminal open with a one-liner that rebuilds and deploys in one step:

./build.sh && cp MyPlugin.plugin ~/Documents/"Auterion Mission Control"/Plugins/