{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://danklinux.com/schemas/plugin.json", "title": "DankMaterialShell Plugin Manifest", "description": "Schema for DankMaterialShell plugin.json manifest files", "type": "object", "required": [ "id", "name", "description", "version", "author", "type", "capabilities", "component" ], "properties": { "id": { "type": "string", "description": "Unique plugin identifier (camelCase, no spaces)", "pattern": "^[a-zA-Z][a-zA-Z0-9]*$" }, "name": { "type": "string", "description": "Human-readable plugin name", "minLength": 1 }, "description": { "type": "string", "description": "Short description of plugin functionality", "minLength": 1 }, "version": { "type": "string", "description": "Semantic version string (e.g., '1.0.0')", "pattern": "^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9.-]+)?(\\+[a-zA-Z0-9.-]+)?$" }, "author": { "type": "string", "description": "Plugin creator name or email", "minLength": 1 }, "type": { "type": "string", "description": "Plugin type", "enum": ["widget", "daemon", "launcher"] }, "capabilities": { "type": "array", "description": "Array of plugin capabilities", "items": { "type": "string" }, "minItems": 1 }, "component": { "type": "string", "description": "Relative path to main QML component file", "pattern": "^\\./.*\\.qml$" }, "trigger": { "type": "string", "description": "Trigger string for launcher activation (required for launcher type)" }, "icon": { "type": "string", "description": "Material Design icon name" }, "settings": { "type": "string", "description": "Path to settings component QML file", "pattern": "^\\./.*\\.qml$" }, "requires_dms": { "type": "string", "description": "Minimum DMS version requirement (e.g., '>=0.1.18', '>0.1.0')", "pattern": "^(>=?|<=?|=|>|<)\\d+\\.\\d+\\.\\d+$" }, "requires": { "type": "array", "description": "Array of required system tools/dependencies", "items": { "type": "string" } }, "permissions": { "type": "array", "description": "Required capabilities", "items": { "type": "string", "enum": [ "settings_read", "settings_write", "process", "network" ] } } }, "allOf": [ { "if": { "properties": { "type": { "const": "launcher" } } }, "then": { "required": ["trigger"] } } ], "additionalProperties": true }