Skip to main content

Plugin Commands

Commands for managing plugin catalogs, installed plugin copies, enabled state, and extension pages.

Version

The extended management commands and metadata on this page are supported since 3.0.0-dev.4.

get_plugins

Returns metadata for all installed effect, controller, and extension plugins.

Parameters: none

{"jsonrpc":"2.0","method":"get_plugins","id":1}
{"jsonrpc":"2.0","result":{
"effects": [
{
"id": "rainbow",
"name": {"raw": "Rainbow", "byLocale": {"zh-CN": "彩虹"}},
"enabled": true,
"description": {"raw": "Flowing rainbow animation"},
"icon": "Waves",
"permissions": ["log"],
"version": "1.0.0",
"publisher": "Skydimo",
"language": "native-c",
"abi": "skydimo-effect-c-v3",
"repository": "https://github.com/...",
"license": "MIT",
"params": [],
"pluginDir": "...",
"dataDir": "...",
"bundled": false,
"installSource": "import-dev",
"reimportsOnRefresh": false
}
],
"controllers": [
{
"id": "skydimo_serial",
"name": {"raw": "Skydimo Serial"},
"enabled": true,
"version": "1.0.0",
"publisher": "Skydimo",
"language": "lua",
"pluginDir": "...",
"bundled": true,
"installSource": "bundled",
"reimportsOnRefresh": false
}
],
"extensions": [
{
"id": "led_canvas",
"name": {"raw": "LED Canvas"},
"enabled": true,
"version": "1.0.0",
"publisher": "Skydimo",
"language": "native-c",
"abi": "skydimo-extension-c-v2",
"page": {"type": "path", "value": ".../page/dist/index.html"},
"pluginDir": "...",
"bundled": false,
"installSource": "import-dev",
"reimportsOnRefresh": false
}
]
},"id":1}

Each plugin item can include:

FieldTypeDescription
idstringPlugin ID
nameLocalizedTextDisplay name
enabledbooleanWhether the plugin is enabled
versionstringManifest version
publisherstringManifest publisher
languagestringRuntime language, e.g. lua or native-c
abistring | nullNative ABI identifier for native-c plugins
repositorystring | nullSource repository URL
licensestring | nullLicense identifier
pluginDirstringResolved runtime plugin directory
dataDirstring | nullPlugin data directory, if it exists
bundledbooleanWhether plugin is bundled with the application
installSourcestringbundled | import | import-dev | package | manual
reimportsOnRefreshbooleanWhether refresh can reimport this plugin from a source queue
pageobject | nullExtension page source, if the extension declares one

refresh_plugins

Refresh plugin state and apply pending imports.

Parameters: none

{"jsonrpc":"2.0","method":"refresh_plugins","id":1}
{"jsonrpc":"2.0","result":null,"id":1}

Typical effects of refresh:

  • Import queued plugins
  • Reload plugin registries
  • Refresh runtime state so plugin updates are picked up
  • Emit plugin-changed events to UI

open_plugin_dir

Open the plugin root directory or one plugin's resolved directory in the system file manager.

Parameters:

FieldTypeRequiredDescription
pluginIdstringnoIf provided, opens this plugin's resolved directory; otherwise opens the plugin root directory
{"jsonrpc":"2.0","method":"open_plugin_dir","params":{"pluginId":"rainbow"},"id":1}
{"jsonrpc":"2.0","result":null,"id":1}

open_plugin_data_dir

Open a plugin's data directory in the system file manager.

Parameters:

FieldTypeRequiredDescription
pluginIdstringyesPlugin ID
{"jsonrpc":"2.0","method":"open_plugin_data_dir","params":{"pluginId":"rainbow"},"id":1}
{"jsonrpc":"2.0","result":null,"id":1}

delete_plugin

Delete an installed user plugin copy.

Parameters:

FieldTypeRequiredDescription
pluginIdstringyesPlugin ID
deleteDatabooleannoWhether to delete plugin data directory too
{"jsonrpc":"2.0","method":"delete_plugin","params":{
"pluginId":"my_effect",
"deleteData":true
},"id":1}
{"jsonrpc":"2.0","result":null,"id":1}
caution

Bundled plugins cannot be deleted directly. Use reset_plugin instead.


reset_plugin

Reset a plugin to default bundled state by removing a user override copy.

Parameters:

FieldTypeRequiredDescription
pluginIdstringyesPlugin ID
resetDatabooleannoWhether to also reset plugin data
{"jsonrpc":"2.0","method":"reset_plugin","params":{
"pluginId":"rainbow",
"resetData":false
},"id":1}
{"jsonrpc":"2.0","result":null,"id":1}

get_plugin_dir

Get the plugin root directory path as a string.

Parameters: none

{"jsonrpc":"2.0","method":"get_plugin_dir","id":1}
{"jsonrpc":"2.0","result":"C:/.../plugins","id":1}

set_controller_plugins_enabled

Enable or disable controller plugins.

Parameters:

FieldTypeRequiredDescription
pluginIdsstring[]yesList of controller plugin IDs
enabledbooleanyestrue to enable, false to disable
{"jsonrpc":"2.0","method":"set_controller_plugins_enabled","params":{
"pluginIds":["skydimo_serial"],
"enabled":true
},"id":1}
info

Disabling a controller plugin disconnects all devices currently managed by that plugin.


set_effect_plugins_enabled

Enable or disable effect plugins.

Parameters:

FieldTypeRequiredDescription
pluginIdsstring[]yesList of effect plugin IDs
enabledbooleanyestrue to enable, false to disable
{"jsonrpc":"2.0","method":"set_effect_plugins_enabled","params":{
"pluginIds":["rainbow"],
"enabled":true
},"id":1}

set_extension_plugins_enabled

Enable or disable extension plugins.

Parameters:

FieldTypeRequiredDescription
pluginIdsstring[]yesList of extension plugin IDs
enabledbooleanyestrue to enable, false to disable
{"jsonrpc":"2.0","method":"set_extension_plugins_enabled","params":{
"pluginIds":["openrgb"],
"enabled":false
},"id":1}

ext_page_send

Send a message to an extension's embedded page.

Parameters:

FieldTypeRequiredDescription
extIdstringyesExtension plugin ID
dataanyyesArbitrary JSON data to send
{"jsonrpc":"2.0","method":"ext_page_send","params":{
"extId":"openrgb",
"data":{"action":"refresh"}
},"id":1}

Lua extensions receive this through on_page_message(data). Native-c extensions receive it through on_page_message_json.


Plugin Download Session Commands

These commands support download-and-install flows from remote sources.

start_download_plugin_session

Start a server-side download session from a source URL.

install_from_plugin_session

Install selected plugin IDs from a session into managed plugin storage.

cancel_download_plugin_session

Cancel and clean up a download session.

note

Exact payload schemas may evolve across development builds. Prefer checking current API data types in your target build when integrating tooling.