summaryrefslogtreecommitdiff
path: root/raveos-hyprland-theme/theme-data/dms/PLUGINS/plugin-schema.json
diff options
context:
space:
mode:
Diffstat (limited to 'raveos-hyprland-theme/theme-data/dms/PLUGINS/plugin-schema.json')
-rw-r--r--raveos-hyprland-theme/theme-data/dms/PLUGINS/plugin-schema.json115
1 files changed, 115 insertions, 0 deletions
diff --git a/raveos-hyprland-theme/theme-data/dms/PLUGINS/plugin-schema.json b/raveos-hyprland-theme/theme-data/dms/PLUGINS/plugin-schema.json
new file mode 100644
index 0000000..2f7e172
--- /dev/null
+++ b/raveos-hyprland-theme/theme-data/dms/PLUGINS/plugin-schema.json
@@ -0,0 +1,115 @@
+{
+ "$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", "desktop"]
+ },
+ "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
+}