Plugin Configuration
All plugins must include a mobro_plugin_config.json file, which defines essential metadata for proper functionality.
This configuration file must be placed in the root directory of the plugin when publishing it as a .zip file.
If this file is missing, the plugin is considered invalid and cannot be installed in MoBro.
Fields
The following table describes the fields of the mobro_plugin_config.json file:
| Field | Default | Restrictions | Description |
|---|---|---|---|
| name | - | Required Length: 3 - 32Pattern: ^[\w-]+$ | A globally unique name (ID) for the plugin. |
| displayName | name | Max length: 32 | A human-readable, visible name for the plugin. |
| author | Unknown | Max length: 32 | The author's name for the plugin. |
| description | - | Max length: 512 | A short textual description of the plugin. |
| assembly | Plugin.dll | Max length: 128 | The published .dll file to load. |
| localization | - | Max length: 128 | The relative path to the folder containing localization files. |
| executionMode | AdminBackground | UserSession OR AdminBackground | Determines the context in which the plugin process will run. |
| repository | - | Max length: 128 | The optional repository URL of the plugin if available. |
| homepage | - | Max length: 128 | The optional homepage URL of the plugin if available. |
| tags | [] | max. 10 | Optional list of tags used when published to the marketplace. |
settings | [] | - | The plugin's configuration settings. |
| dependencies | [] | max. 10 | The plugin's (external) dependencies. |
executionMode Field
By default, a plugin runs in AdminBackground mode. In this mode, the plugin process is executed by the MoBro
background service, granting it administrative privileges. This is useful for tasks such as accessing system sensors.
However, plugins running in this mode do not have access to the user session due to Windows permission restrictions.
Plugins running in AdminBackground can also keep running in the background while the main MoBro application is not
running or openend (depending on the 'Background Monitoring' setting in MoBro).
This allows for continuous monitoring and data collection in the background even when the user is not
actively using MoBro.
A plugin running in UserSession mode will start only when the MoBro application is running. The
plugin is executed by the MoBro application itself, providing it access to the user session. This is required in cases
where metrics, interactions, or specific actions depend on user session access.
dependencies Field
The dependencies field lets the plugin define external requirements.
This could be a dependency on a specific third party program that must be installed or running.
| Field | Type | Restrictions | Description |
|---|---|---|---|
| name | string | Required Length: 1 - 64Pattern: ^[\w-]+$ | Unique identifier for the dependency. |
| label | string | Required Length: 1 - 128 | Human-readable name for the dependency. |
| description | string | Max length: 256 | A short textual description of the dependency. |
| link | string | Max length: 256 | A URL to the dependency's homepage or download site. |
| version | string | Max length: 16 | The specific version of the dependency required. |
| required | boolean | Default: false | If true, the plugin will not load without this installed. |
Example Configuration
Below is an example of a mobro_plugin_config.json file from
the MoBroHardwareMonitor plugin.
This configuration demonstrates how to define the required fields, such as a unique plugin name, a custom assembly name,
and the localization directory.
Settings have been omitted for brevity; refer to In-depth: Settings for more details.
{
"name": "modbros_mobrohardwaremonitor",
"displayName": "MoBro Hardware Monitor",
"author": "ModBros",
"description": "A basic hardware monitoring plugin covering the most basic metrics",
"assembly": "Plugin.MoBroHardwareMonitor.dll",
"localization": "Resources/Localization",
"repository": "https://github.com/ModBros/mobro-plugin-mobrohardwaremonitor",
"homepage": null,
"tags": [
"hardware", "system"
],
"settings": []
}