{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "WallReel Configuration", "type": "object", "properties": { "wallpaper": { "type": "object", "properties": { "paths": { "type": "array", "items": { "type": "string" }, "default": [], "description": "List of paths to images." }, "dirs": { "type": "array", "items": { "type": "object", "properties": { "path": { "type": "string", "default": "", "description": "Path to the directory." }, "recursive": { "type": "boolean", "default": false, "description": "Whether to search the directory recursively." } } }, "default": [], "description": "Directories to search for images." }, "excludes": { "type": "array", "items": { "type": "string" }, "default": [], "description": "Exclude patterns (regex)" } } }, "theme": { "type": "object", "properties": { "palettes": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "default": "", "description": "Name of the palette" }, "colors": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "default": "", "description": "Name of the color" }, "value": { "type": "string", "default": "", "description": "Color value in hex format, e.g. \"#ff0000\" for red" } } }, "default": [], "description": "List of colors in the palette" } } }, "default": [] } } }, "action": { "type": "object", "properties": { "previewDebounceTime": { "type": "integer", "default": 300, "description": "Debounce time for preview action in milliseconds" }, "printSelected": { "type": "boolean", "default": true, "description": "Whether to print the selected wallpaper path to stdout on confirm" }, "printPreview": { "type": "boolean", "default": false, "description": "Whether to print the previewed wallpaper path to stdout on preview" }, "onSelected": { "type": "string", "default": "", "description": "Command to execute on confirmation" }, "onPreview": { "type": "string", "default": "", "description": "Command to execute on preview" }, "saveState": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string", "default": "", "description": "Key of value to save, used as {{ key }} in onRestore command" }, "fallback": { "type": "string", "default": "", "description": "Value to save, used when \"command\" is not set or command execution fails or output is empty" }, "command": { "type": "string", "default": "", "description": "Command that outputs(to stdout) the value to save when executed" }, "timeout": { "type": "integer", "default": 3000, "description": "Timeout for executing command in milliseconds. 0 or negative means no timeout" } } }, "default": [], "description": "Useful for restore command" }, "onRestore": { "type": "string", "default": "", "description": "Command to execute on restore ({{ key }} -> value defined or obtained in saveState)" }, "quitOnSelected": { "type": "boolean", "default": false, "description": "Whether to quit the application after confirming a wallpaper" }, "restoreOnClose": { "type": "boolean", "default": true, "description": "Whether to run the restore command after closing the application without confirming a wallpaper" } } }, "style": { "type": "object", "properties": { "image_width": { "type": "integer", "default": 320, "description": "Width of each image" }, "image_height": { "type": "integer", "default": 180, "description": "Height of each image" }, "image_focus_scale": { "type": "number", "default": 1.5, "minimum": 1.0, "description": "Scale of the focused image (relative to unfocused image)" }, "window_width": { "type": "integer", "default": 750, "description": "Initial window width" }, "window_height": { "type": "integer", "default": 500, "description": "Initial window height" } } }, "cache": { "type": "object", "properties": { "saveSortMethod": { "type": "boolean", "default": true, "description": "Whether to persist the sort type and order" }, "savePalette": { "type": "boolean", "default": true, "description": "Whether to persist the selected palette" }, "maxImageEntries": { "type": "integer", "default": 1000, "description": "Maximum number of entries in the image cache (older entries will be evicted)" } } } } }