{
	"$id": "https://yazi-rs.github.io/schemas/yazi.json",
	"$schema": "https://json-schema.org/draft/2020-12/schema",
	"type": "object",
	"additionalProperties": false,
	"properties": {
		"$schema": {
			"default": "https://yazi-rs.github.io/schemas/yazi.schema.json",
			"type": "string"
		},
		"mgr": {
			"type": "object",
			"properties": {
				"ratio": {
					"type": "array",
					"items": {
						"$ref": "/schemas/types/u16.json"
					},
					"minItems": 3,
					"maxItems": 3
				},
				"sort_by": {
					"enum": [
						"none",
						"mtime",
						"btime",
						"extension",
						"alphabetical",
						"natural",
						"size",
						"random"
					]
				},
				"sort_sensitive": { "type": "boolean" },
				"sort_reverse": { "type": "boolean" },
				"sort_dir_first": { "type": "boolean" },
				"sort_translit": { "type": "boolean" },
				"sort_fallback": { "enum": ["alphabetical", "natural"] },
				"linemode": {
					"anyOf": [
						{ "type": "string", "minLength": 1, "maxLength": 20 },
						{
							"enum": [
								"none",
								"size",
								"btime",
								"mtime",
								"permissions",
								"owner"
							]
						}
					]
				},
				"show_hidden": { "type": "boolean" },
				"show_symlink": { "type": "boolean" },
				"scrolloff": { "$ref": "/schemas/types/u8.json" },
				"mouse_events": {
					"type": "array",
					"items": {
						"enum": ["click", "scroll", "touch", "move", "drag"]
					}
				}
			},
			"additionalProperties": false
		},
		"preview": {
			"type": "object",
			"properties": {
				"wrap": { "enum": ["yes", "no"] },
				"tab_size": { "$ref": "/schemas/types/u8.json" },
				"max_width": { "$ref": "/schemas/types/u16.json" },
				"max_height": { "$ref": "/schemas/types/u16.json" },
				"cache_dir": { "type": "string" },
				"image_delay": {
					"type": "number",
					"minimum": 0,
					"maximum": 100
				},
				"image_filter": {
					"enum": ["nearest", "triangle", "catmull-rom", "lanczos3"]
				},
				"image_quality": {
					"type": "integer",
					"minimum": 50,
					"maximum": 90
				},
				"ueberzug_scale": { "type": "number", "minimum": 0 },
				"ueberzug_offset": {
					"type": "array",
					"items": { "type": "number" },
					"minItems": 4,
					"maxItems": 4
				}
			},
			"additionalProperties": false
		},
		"opener": {
			"type": "object",
			"additionalProperties": {
				"type": "array",
				"items": {
					"type": "object",
					"properties": {
						"run": { "type": "string" },
						"block": { "type": "boolean" },
						"orphan": { "type": "boolean" },
						"desc": { "type": "string" },
						"for": { "$ref": "/schemas/types/platform.json" }
					},
					"required": ["run"]
				}
			}
		},
		"open": {
			"type": "object",
			"properties": {
				"rules": { "$ref": "#/$defs/open_rules" },
				"append_rules": { "$ref": "#/$defs/open_rules" },
				"prepend_rules": { "$ref": "#/$defs/open_rules" }
			},
			"additionalProperties": false
		},
		"tasks": {
			"type": "object",
			"properties": {
				"file_workers": { "$ref": "/schemas/types/u8.json" },
				"plugin_workers": { "$ref": "/schemas/types/u8.json" },
				"fetch_workers": { "$ref": "/schemas/types/u8.json" },
				"preload_workers": { "$ref": "/schemas/types/u8.json" },
				"process_workers": { "$ref": "/schemas/types/u8.json" },
				"bizarre_retry": { "$ref": "/schemas/types/u8.json" },
				"image_alloc": {
					"$ref": "/schemas/types/u32.json"
				},
				"image_bound": {
					"type": "array",
					"items": { "$ref": "/schemas/types/u16.json" },
					"minItems": 2,
					"maxItems": 2
				},
				"suppress_preload": { "type": "boolean" }
			},
			"additionalProperties": false
		},
		"plugin": {
			"type": "object",
			"properties": {
				"fetchers": { "$ref": "#/$defs/fetchers" },
				"prepend_fetchers": { "$ref": "#/$defs/fetchers" },
				"append_fetchers": { "$ref": "#/$defs/fetchers" },
				"spotters": { "$ref": "#/$defs/spotters" },
				"prepend_spotters": { "$ref": "#/$defs/spotters" },
				"append_spotters": { "$ref": "#/$defs/spotters" },
				"preloaders": { "$ref": "#/$defs/preloaders" },
				"prepend_preloaders": { "$ref": "#/$defs/preloaders" },
				"append_preloaders": { "$ref": "#/$defs/preloaders" },
				"previewers": { "$ref": "#/$defs/previewers" },
				"prepend_previewers": { "$ref": "#/$defs/previewers" },
				"append_previewers": { "$ref": "#/$defs/previewers" }
			},
			"additionalProperties": false
		},
		"input": {
			"type": "object",
			"properties": {
				"cursor_blink": { "type": "boolean" },
				"cd_title": { "type": "string" },
				"cd_origin": {
					"$ref": "#/$defs/origin"
				},
				"cd_offset": {
					"$ref": "#/$defs/offset"
				},
				"create_title": {
					"oneOf": [
						{
							"type": "array",
							"items": { "type": "string" },
							"minItems": 2,
							"maxItems": 2
						},
						{
							"type": "string"
						}
					]
				},
				"create_origin": {
					"$ref": "#/$defs/origin"
				},
				"create_offset": {
					"$ref": "#/$defs/offset"
				},
				"rename_title": { "type": "string" },
				"rename_origin": {
					"$ref": "#/$defs/origin"
				},
				"rename_offset": {
					"$ref": "#/$defs/offset"
				},
				"filter_title": { "type": "string" },
				"filter_origin": {
					"$ref": "#/$defs/origin"
				},
				"filter_offset": {
					"$ref": "#/$defs/offset"
				},
				"find_title": {
					"type": "array",
					"items": { "type": "string" },
					"minItems": 2,
					"maxItems": 2
				},
				"find_origin": {
					"$ref": "#/$defs/origin"
				},
				"find_offset": {
					"$ref": "#/$defs/offset"
				},
				"search_title": { "type": "string" },
				"search_origin": {
					"$ref": "#/$defs/origin"
				},
				"search_offset": {
					"$ref": "#/$defs/offset"
				},
				"shell_title": {
					"type": "array",
					"items": { "type": "string" },
					"minItems": 2,
					"maxItems": 2
				},
				"shell_origin": {
					"$ref": "#/$defs/origin"
				},
				"shell_offset": {
					"$ref": "#/$defs/offset"
				}
			}
		},
		"confirm": {
			"type": "object",
			"properties": {
				"trash_title": { "type": "string" },
				"trash_origin": {
					"$ref": "#/$defs/origin"
				},
				"trash_offset": {
					"$ref": "#/$defs/offset"
				},
				"delete_title": { "type": "string" },
				"delete_origin": {
					"$ref": "#/$defs/origin"
				},
				"delete_offset": {
					"$ref": "#/$defs/offset"
				},
				"overwrite_title": { "type": "string" },
				"overwrite_body": { "type": "string" },
				"overwrite_origin": {
					"$ref": "#/$defs/origin"
				},
				"overwrite_offset": {
					"$ref": "#/$defs/offset"
				},
				"quit_title": { "type": "string" },
				"quit_body": { "type": "string" },
				"quit_origin": {
					"$ref": "#/$defs/origin"
				},
				"quit_offset": {
					"$ref": "#/$defs/offset"
				}
			},
			"additionalProperties": false
		},
		"pick": {
			"type": "object",
			"properties": {
				"open_title": { "type": "string" },
				"open_origin": {
					"$ref": "#/$defs/origin"
				},
				"open_offset": {
					"$ref": "#/$defs/offset"
				}
			}
		},
		"which": {
			"type": "object",
			"properties": {
				"sort_by": { "enum": ["none", "key", "desc"] },
				"sort_sensitive": { "type": "boolean" },
				"sort_reverse": { "type": "boolean" },
				"sort_translit": { "type": "boolean" }
			}
		}
	},
	"$defs": {
		"origin": {
			"enum": [
				"top-left",
				"top-center",
				"top-right",
				"bottom-left",
				"bottom-center",
				"bottom-right",
				"center",
				"hovered"
			]
		},
		"offset": {
			"type": "array",
			"items": [
				{ "$ref": "/schemas/types/i16.json" },
				{ "$ref": "/schemas/types/i16.json" },
				{ "$ref": "/schemas/types/u16.json" },
				{
					"$ref": "/schemas/types/u16.json",
					"minimum": 3,
					"maximum": 32767
				}
			],
			"minItems": 4,
			"maxItems": 4
		},
		"priority": {
			"enum": ["low", "normal", "high"]
		},
		"fetchers": {
			"type": "array",
			"items": {
				"type": "object",
				"properties": {
					"group": { "type": "string" },
					"url": { "type": "string" },
					"mime": { "type": "string" },
					"run": { "type": "string" },
					"prio": { "$ref": "#/$defs/priority" }
				},
				"oneOf": [
					{
						"required": ["mime", "run"]
					},
					{
						"required": ["url", "run"]
					}
				]
			}
		},
		"spotters": {
			"type": "array",
			"items": {
				"type": "object",
				"properties": {
					"url": { "type": "string" },
					"mime": { "type": "string" },
					"run": { "type": "string" }
				},
				"oneOf": [
					{
						"required": ["mime", "run"]
					},
					{
						"required": ["url", "run"]
					}
				]
			}
		},
		"preloaders": {
			"type": "array",
			"items": {
				"type": "object",
				"properties": {
					"url": { "type": "string" },
					"mime": { "type": "string" },
					"run": { "type": "string" },
					"next": { "type": "boolean" },
					"prio": { "$ref": "#/$defs/priority" }
				},
				"oneOf": [
					{
						"required": ["mime", "run"]
					},
					{
						"required": ["url", "run"]
					}
				]
			}
		},
		"previewers": {
			"type": "array",
			"items": {
				"type": "object",
				"properties": {
					"url": { "type": "string" },
					"mime": { "type": "string" },
					"run": { "type": "string" },
					"sync": { "type": "boolean" }
				},
				"oneOf": [
					{
						"required": ["mime", "run"]
					},
					{
						"required": ["url", "run"]
					}
				]
			}
		},
		"open_rules": {
			"type": "array",
			"items": {
				"type": "object",
				"properties": {
					"mime": { "type": "string" },
					"url": { "type": "string" },
					"use": {
						"oneOf": [
							{ "type": "array", "items": { "type": "string" } },
							{ "type": "string" }
						]
					}
				},
				"required": ["use"],
				"oneOf": [
					{
						"required": ["mime"]
					},
					{
						"required": ["url"]
					}
				]
			}
		}
	}
}
