跳到主要内容

Manifest 参考

每个插件都需要在根目录下提供一个 manifest.json 文件。本页记录了所有可用字段。

基础字段(所有插件类型通用)

字段类型必填说明
idstring唯一插件标识符(必须与目录后缀匹配)
versionstring语义版本号(如 "1.0.0"
namestring显示名称(或 i18n 键,如 "meta.name"
typestring插件类型:"controller""effect""extension"
languagestring始终为 "lua"
entrystring入口脚本文件名(如 "main.lua""init.lua"
permissionsstring[]所需权限列表
publisherstring作者或组织名称
descriptionstring人类可读描述(或 i18n 键)
repositorystring源仓库 URL
licensestring许可证标识符(如 "MIT"

示例(基础)

{
"id": "my_plugin",
"version": "1.0.0",
"name": "My Plugin",
"type": "effect",
"language": "lua",
"entry": "main.lua",
"permissions": ["log"],
"publisher": "Your Name",
"description": "A cool plugin",
"license": "MIT"
}

控制器特有字段

match

定义控制器如何匹配硬件设备。

字段类型必填说明
match.protocolstring"serial""hid""mdns"
match.rulesMatchRule[]USB 匹配规则
match.baud_ratenumber串口波特率(仅 serial)
match.timeout_msnumberI/O 超时(毫秒)

MatchRule

字段类型说明
vidstringUSB 供应商 ID,十六进制(如 "0x1A86"
pidstringUSB 产品 ID,十六进制(如 "0x7523"
interface_numbernumberHID 接口号(仅 HID,可选)。指定后 Core 仅匹配该接口号的 HID 集合。省略则匹配所有接口。
提示

对于暴露多个接口的 HID 设备(例如键盘的输入端点和灯控端点分别在不同接口上),在匹配规则中指定 interface_number 可以让 Core 在匹配阶段就完成过滤——on_validate() 被调用之前——避免不必要的设备句柄打开和重复认领。

示例(串口控制器)

{
"id": "skydimo_serial",
"version": "1.0.0",
"name": "Skydimo Serial Controller",
"type": "controller",
"language": "lua",
"entry": "main.lua",
"permissions": ["serial:read", "serial:write", "log"],
"match": {
"protocol": "serial",
"baud_rate": 115200,
"timeout_ms": 200,
"rules": [
{ "vid": "0x1A86", "pid": "0x7523" }
]
}
}

示例(HID 控制器,带 interface_number)

{
"id": "my_hid_keyboard",
"version": "1.0.0",
"name": "My HID Keyboard",
"type": "controller",
"language": "lua",
"entry": "main.lua",
"permissions": ["hid:read", "hid:write", "log"],
"match": {
"protocol": "hid",
"timeout_ms": 200,
"rules": [
{ "vid": "0x1532", "pid": "0x024E", "interface_number": 3 },
{ "vid": "0x1532", "pid": "0x0293", "interface_number": 2 }
]
}
}

灯效特有字段

字段类型必填说明
categorystring灯效分类(用于排序,或 i18n 键)
iconstringLucide 图标名称(如 "Waves""Zap""Music"
paramsParamDefinition[]可配置参数列表

ParamDefinition

字段类型必填说明
keystring参数标识符
labelstring显示标签(或 i18n 键)
kindstring"slider""select""toggle""color""multi-color"
defaultany默认值
groupstringUI 分组标签
dependencyDependency条件可见性

Kind 特有字段:

Kind额外字段
sliderminmaxstep
selectoptions: [{label, value}]
toggle(无)
color(无)
multi-colorfixedCountminCountmaxCount

Dependency(依赖条件)

控制参数何时显示或启用:

{
"key": "preset",
"equals": 0,
"behavior": "hide"
}
字段类型说明
keystring依赖的参数键名
equalsany仅当依赖项等于此值时显示
not_equalsany仅当依赖项不等于此值时显示
behaviorstring"hide""disable"

示例(灯效)

{
"id": "rainbow",
"version": "1.0.0",
"name": "meta.name",
"type": "effect",
"language": "lua",
"entry": "main.lua",
"category": "meta.category",
"icon": "Waves",
"permissions": ["log"],
"params": [
{
"key": "speed",
"label": "params.speed",
"group": "params.groups.animation",
"kind": "slider",
"default": 2.5,
"min": 0.0,
"max": 5.0,
"step": 0.1
},
{
"key": "preset",
"label": "params.preset",
"kind": "select",
"default": 0,
"options": [
{"label": "Custom", "value": 0},
{"label": "Rainbow", "value": 1}
]
},
{
"key": "colors",
"label": "params.colors",
"kind": "multi-color",
"default": ["#FF0000", "#00FF00", "#0000FF"],
"minCount": 2,
"maxCount": 16,
"dependency": {
"key": "preset",
"equals": 0,
"behavior": "hide"
}
}
]
}

扩展特有字段

字段类型必填说明
pagestring内嵌 HTML 页面的路径(如 "page/dist/index.html"

示例(扩展)

{
"id": "openrgb",
"version": "1.0.0",
"name": "meta.name",
"type": "extension",
"language": "lua",
"entry": "init.lua",
"permissions": ["network:tcp", "process", "log"],
"publisher": "Skydimo",
"page": "page/dist/index.html"
}

国际化(i18n)键

namedescriptionlabelcategorygroup 等字段可使用 i18n 键代替字面字符串。使用键值时,Skydimo 会从插件的 locales/ 目录中解析翻译。

详情请参阅国际化