# A TOML linter such as https://taplo.tamasfe.dev/ can use this schema to validate your config.
# If you encounter any issues, please make an issue at https://github.com/yazi-rs/schemas.
"$schema" = "https://yazi-rs.github.io/schemas/yazi.json"

[mgr]
ratio = [1, 4, 3]
sort_by = "natural"
sort_sensitive = false
sort_reverse = false
sort_dir_first = true
linemode = "none"
show_hidden = true
show_symlink = true
scrolloff = 5

[preview]
tab_size = 2
max_width = 600
max_height = 900
cache_dir = ""
image_filter = "triangle"
image_quality = 75
sixel_fraction = 15
ueberzug_scale = 1
ueberzug_offset = [0, 0, 0, 0]

[opener]
edit = [
	{ run = '${EDITOR:=nvim} "$@"', desc = "$EDITOR", block = true, for = "unix" },
	{ run = 'code "%*"', orphan = true, desc = "code", for = "windows" },
	{ run = 'code -w "%*"', block = true, desc = "code (block)", for = "windows" },
]
open = [
	{ run = 'xdg-open "$@"', desc = "Open", for = "linux" },
	{ run = 'open "$@"', desc = "Open", for = "macos" },
	{ run = 'start "" "%1"', orphan = true, desc = "Open", for = "windows" },
]
reveal = [
	{ run = 'xdg-open "$(dirname "$0")"', desc = "Reveal", for = "linux" },
	{ run = 'open -R "$1"', desc = "Reveal", for = "macos" },
	{ run = 'explorer /select, "%1"', orphan = true, desc = "Reveal", for = "windows" },
	{ run = '''exiftool "$1"; echo "Press enter to exit"; read _''', block = true, desc = "Show EXIF", for = "unix" },
]
extract = [
	{ run = 'unar "$1"', desc = "Extract here", for = "unix" },
	{ run = 'unar "%1"', desc = "Extract here", for = "windows" },
]
play = [
	{ run = 'mpv "$@"', orphan = true, for = "unix" },
	{ run = 'mpv "%1"', orphan = true, for = "windows" },
	{ run = '''mediainfo "$1"; echo "Press enter to exit"; read _''', block = true, desc = "Show media info", for = "unix" },
]

[open]
rules = [
	{ name = "*/", use = [
		"edit",
		"open",
		"reveal",
	] },

	{ mime = "text/*", use = [
		"edit",
		"reveal",
	] },
	{ mime = "image/*", use = [
		"open",
		"reveal",
	] },
	{ mime = "{audio,video}/*", use = [
		"play",
		"reveal",
	] },
	{ mime = "inode/x-empty", use = [
		"edit",
		"reveal",
	] },

	{ mime = "application/*zip", use = [
		"extract",
		"reveal",
	] },
	{ mime = "application/x-{tar,bzip*,7z-compressed,xz,rar}", use = [
		"extract",
		"reveal",
	] },

	{ mime = "application/json", use = [
		"edit",
		"reveal",
	] },
	{ mime = "*/javascript", use = [
		"edit",
		"reveal",
	] },

	{ mime = "*", use = [
		"open",
		"reveal",
	] },
]

[tasks]
micro_workers = 10
macro_workers = 25
bizarre_retry = 5
image_alloc = 536870912  # 512MB
image_bound = [0, 0]
suppress_preload = false

[plugin]

#preloaders = [
#  { name = "*", cond = "!mime", run = "mime", multi = true, prio = "high" },
#  # Image
#  { mime = "image/*", run = "image" },
#  # Video
#  { mime = "video/*", run = "video" },
#  # PDF
#  { mime = "application/pdf", run = "pdf" },
#  #]
previewers = [
	{ name = "*/", run = "folder", sync = true },
	# Code
	{ mime = "text/*", run = "code" },
	{ mime = "*/{xml,javascript,x-wine-extension-ini}", run = "code" },
	# JSON
	{ mime = "application/json", run = "json" },
	# Image
	{ mime = "image/vnd.djvu", run = "noop" },
	{ mime = "image/*", run = "image" },
	# Video
	{ mime = "video/*", run = "video" },
	# PDF
	{ mime = "application/pdf", run = "pdf" },
	# CSV
	{ mime = "text/csv", run = "miller" },
	# Archive
	{ mime = "application/*zip", run = "archive" },
	{ mime = "application/x-{tar,bzip*,7z-compressed,xz,rar}", run = "archive" },
	# Fallback
	{ name = "*", run = "hexyl" },
]

prepend_previewers = [
	# Exifaudio
	{ mime = "audio/*", run = "exifaudio" },
	# Archive previewer
	{ mime = "application/*zip", run = "ouch" },
	{ mime = "application/x-tar", run = "ouch" },
	{ mime = "application/x-bzip2", run = "ouch" },
	{ mime = "application/x-7z-compressed", run = "ouch" },
	{ mime = "application/x-rar", run = "ouch" },
	{ mime = "application/x-xz", run = "ouch" },
	# Markdown previewer
	{ name = ".md", run = "glow" },
]

[input]
# cd
cd_title = "Change directory:"
cd_origin = "top-center"
cd_offset = [0, 2, 50, 3]

# create
# create_title = "Create:"
# create_origin = "top-center"
# create_offset = [0, 2, 50, 3]

# rename
rename_title = "Rename:"
rename_origin = "hovered"
rename_offset = [0, 1, 50, 3]

# trash
trash_title = "Move {n} selected file{s} to trash? (y/N)"
trash_origin = "top-center"
trash_offset = [0, 2, 50, 3]

# delete
delete_title = "Delete {n} selected file{s} permanently? (y/N)"
delete_origin = "top-center"
delete_offset = [0, 2, 50, 3]

# filter
filter_title = "Filter:"
filter_origin = "top-center"
filter_offset = [0, 2, 50, 3]

# find
find_title = ["Find next:", "Find previous:"]
find_origin = "top-center"
find_offset = [0, 2, 50, 3]

# search
search_title = "Search via {n}:"
search_origin = "top-center"
search_offset = [0, 2, 50, 3]

# shell
shell_title = ["Shell:", "Shell (block):"]
shell_origin = "top-center"
shell_offset = [0, 2, 50, 3]

# overwrite
overwrite_title = "Overwrite an existing file? (y/N)"
overwrite_origin = "top-center"
overwrite_offset = [0, 2, 50, 3]

# quit
quit_title = "{n} task{s} running, sure to quit? (y/N)"
quit_origin = "top-center"
quit_offset = [0, 2, 50, 3]

[select]
open_title = "Open with:"
open_origin = "hovered"
open_offset = [0, 1, 50, 7]

[which]
sort_by = "none"
sort_sensitive = false
sort_reverse = false

[log]
enabled = false

[headsup]
