# 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, 2, 3 ]
sort_by = "alphabetical"
sort_sensitive = false
sort_reverse = false
sort_dir_first = true
linemode = "size"
show_hidden = true
show_symlink = true
scrolloff = 8

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

[opener]
edit = [
  {run = '/usr/bin/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 "$@" & disown', 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 = 'ouch d -y "%*"', desc = "Extract here with ouch", for = "windows"},
  {run = 'ouch d -y "$@"', desc = "Extract here with ouch", for = "unix"},
]
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 = [
  # Folder
  {name = "*/", use = [ "edit", "open", "reveal" ]},
  # Text
  {mime = "text/*", use = [ "edit", "reveal" ]},
  # Image
  {mime = "image/*", use = [ "open", "reveal" ]},
  # Media
  {mime = "{audio,video}/*", use = [ "play", "reveal" ]},
  # Archive
  {mime = "application/{zip,rar,7z*,tar,gzip,xz,zstd,bzip*,lzma,compress,archive,cpio,arj,xar,ms-cab*}", use = [ "extract", "reveal" ]},
  # JSON
  {mime = "application/{json,ndjson}", use = [ "edit", "reveal" ]},
  {mime = "*/javascript", use = [ "edit", "reveal" ]},
  # Empty file
  {mime = "inode/empty", use = [ "edit", "reveal" ]},
  # Fallback
  {name = "*", 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 = [
  {mime = "image/*", run = "image"},
  {mime = "video/*", run = "video"},
  {mime = "application/pdf", run = "pdf"},
]
previewers = [
  {name = "*/", run = "folder", sync = true},
  {mime = "text/*", run = "code"},
  {mime = "*/{xml,javascript,x-wine-extension-ini}", run = "code"},
  {mime = "application/json", run = "code"},
  {mime = "image/vnd.djvu", run = "noop"},
  {mime = "application/pdf", run = "pdf"},
  # Fallback
  {name = "*", run = "file"},
]
prepend_previewers = [
  {mime = "text/csv", run = "miller"},
  # mediainfo
  {mime = "{audio,video,image}/*", run = "mediainfo"},
  {mime = "application/subrip", run = "mediainfo"},
  # rich preview
  {name = "*.csv", run = "rich-preview"},                     # for csv files
  {name = "*.{md,mdx,markdown}", run = "rich-preview"},       # for markdown (.md) files
  {name = "*.rst", run = "rich-preview"},                     # for restructured text (.rst) files
  {name = "*.ipynb", run = "rich-preview"},                   # for jupyter notebooks (.ipynb)
  {name = "*.json", run = "rich-preview"},                    # for json (.json) files
  {mime = "application/bittorrent", run = "torrent-preview"},
  # 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/vnd.rar", run = "ouch"},
  {mime = "application/x-xz", run = "ouch"},
  {mime = "application/xz", run = "ouch"},
  {mime = "application/x-zstd", run = "ouch"},
  {mime = "application/zstd", run = "ouch"},
  {mime = "application/java-archive", run = "ouch"},
  # Office Documents
  {mime = "application/openxmlformats-officedocument.*", run = "office"},
  {mime = "application/oasis.opendocument.*", run = "office"},
  {mime = "application/ms-*", run = "office"},
  {mime = "application/msword", run = "office"},
  {name = "*.docx", run = "office"},
]

append_previewers = [
  {name = "*", run = "hexyl"},
]

prepend_fetchers = [
  {id = "git", name = "*", run = "git"},
  {id = "git", name = "*/", run = "git"},
]

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

# create
create_title = [ "Create:", "Create (dir):" ]
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]
