| 1 | # A TOML linter such as https://taplo.tamasfe.dev/ can use this schema to validate your config. |
| 2 | # If you encounter any issues, please make an issue at https://github.com/yazi-rs/schemas. |
| 3 | "$schema" = "https://yazi-rs.github.io/schemas/yazi.json" |
| 4 | |
| 5 | [mgr] |
| 6 | ratio = [ 1, 3, 4 ] |
| 7 | sort_by = "alphabetical" |
| 8 | sort_sensitive = false |
| 9 | sort_reverse = false |
| 10 | sort_dir_first = true |
| 11 | sort_translit = false |
| 12 | linemode = "none" |
| 13 | show_hidden = true |
| 14 | show_symlink = true |
| 15 | scrolloff = 5 |
| 16 | mouse_events = [ "click", "scroll" ] |
| 17 | title_format = "Yazi: {cwd}" |
| 18 | |
| 19 | [preview] |
| 20 | wrap = "no" |
| 21 | tab_size = 2 |
| 22 | max_width = 600 |
| 23 | max_height = 900 |
| 24 | cache_dir = "" |
| 25 | image_delay = 30 |
| 26 | image_filter = "triangle" |
| 27 | image_quality = 75 |
| 28 | ueberzug_scale = 1 |
| 29 | ueberzug_offset = [ 0, 0, 0, 0 ] |
| 30 | |
| 31 | [opener] |
| 32 | edit = [ |
| 33 | { run = '${EDITOR:-vi} "$@"', desc = "$EDITOR", block = true, for = "unix" }, |
| 34 | ] |
| 35 | open = [ |
| 36 | { run = 'xdg-open "$1"', desc = "Open", for = "linux" }, |
| 37 | ] |
| 38 | reveal = [ |
| 39 | { run = 'xdg-open "$(dirname "$1")"', desc = "Reveal", for = "linux" }, |
| 40 | { run = '''clear; exiftool "$1"; echo "Press enter to exit"; read _''', block = true, desc = "Show EXIF", for = "unix" }, |
| 41 | ] |
| 42 | extract = [ |
| 43 | { run = 'ya pub extract --list "$@"', desc = "Extract here", for = "unix" }, |
| 44 | { run = 'ya pub extract --list %*', desc = "Extract here", for = "windows" }, |
| 45 | ] |
| 46 | play = [ |
| 47 | { run = 'mpv --force-window "$@"', orphan = true, for = "unix" }, |
| 48 | { run = 'mpv --force-window %*', orphan = true, for = "windows" }, |
| 49 | { run = '''mediainfo "$1"; echo "Press enter to exit"; read _''', block = true, desc = "Show media info", for = "unix" }, |
| 50 | ] |
| 51 | |
| 52 | [open] |
| 53 | rules = [ |
| 54 | # Folder |
| 55 | { name = "*/", use = [ "edit", "open", "reveal" ] }, |
| 56 | # Text |
| 57 | { mime = "text/*", use = [ "edit", "reveal" ] }, |
| 58 | # Image |
| 59 | { mime = "image/*", use = [ "open", "reveal" ] }, |
| 60 | # Media |
| 61 | { mime = "{audio,video}/*", use = [ "play", "reveal" ] }, |
| 62 | # Archive |
| 63 | { mime = "application/{zip,rar,7z*,tar,gzip,xz,zstd,bzip*,lzma,compress,archive,cpio,arj,xar,ms-cab*}", use = [ "extract", "reveal" ] }, |
| 64 | # JSON |
| 65 | { mime = "application/{json,ndjson}", use = [ "edit", "reveal" ] }, |
| 66 | { mime = "*/javascript", use = [ "edit", "reveal" ] }, |
| 67 | # Empty file |
| 68 | { mime = "inode/empty", use = [ "edit", "reveal" ] }, |
| 69 | # Fallback |
| 70 | { name = "*", use = [ "open", "reveal" ] }, |
| 71 | ] |
| 72 | |
| 73 | [tasks] |
| 74 | micro_workers = 10 |
| 75 | macro_workers = 10 |
| 76 | bizarre_retry = 3 |
| 77 | image_alloc = 536870912 # 512MB |
| 78 | image_bound = [ 5000, 5000 ] |
| 79 | suppress_preload = false |
| 80 | |
| 81 | [plugin] |
| 82 | fetchers = [ |
| 83 | # Mimetype |
| 84 | { id = "mime", name = "*", run = "mime", prio = "high" }, |
| 85 | ] |
| 86 | spotters = [ |
| 87 | { name = "*/", run = "folder" }, |
| 88 | # Code |
| 89 | { mime = "text/*", run = "code" }, |
| 90 | { mime = "application/{mbox,javascript,wine-extension-ini}", run = "code" }, |
| 91 | # Image |
| 92 | { mime = "image/{avif,hei?,jxl}", run = "magick" }, |
| 93 | { mime = "image/svg+xml", run = "svg" }, |
| 94 | { mime = "image/*", run = "image" }, |
| 95 | # Video |
| 96 | { mime = "video/*", run = "video" }, |
| 97 | # Fallback |
| 98 | { name = "*", run = "file" }, |
| 99 | ] |
| 100 | preloaders = [ |
| 101 | # Image |
| 102 | { mime = "image/{avif,hei?,jxl}", run = "magick" }, |
| 103 | { mime = "image/svg+xml", run = "svg" }, |
| 104 | { mime = "image/*", run = "image" }, |
| 105 | # Video |
| 106 | { mime = "video/*", run = "video" }, |
| 107 | # PDF |
| 108 | { mime = "application/pdf", run = "pdf" }, |
| 109 | # Font |
| 110 | { mime = "font/*", run = "font" }, |
| 111 | { mime = "application/ms-opentype", run = "font" }, |
| 112 | ] |
| 113 | previewers = [ |
| 114 | { name = "*/", run = "folder" }, |
| 115 | # Code |
| 116 | { mime = "text/*", run = "code" }, |
| 117 | { mime = "application/{mbox,javascript,wine-extension-ini}", run = "code" }, |
| 118 | # JSON |
| 119 | { mime = "application/{json,ndjson}", run = "json" }, |
| 120 | # Image |
| 121 | { mime = "image/{avif,hei?,jxl}", run = "magick" }, |
| 122 | { mime = "image/svg+xml", run = "svg" }, |
| 123 | { mime = "image/*", run = "image" }, |
| 124 | # Video |
| 125 | { mime = "video/*", run = "video" }, |
| 126 | # PDF |
| 127 | { mime = "application/pdf", run = "pdf" }, |
| 128 | # Archive |
| 129 | { mime = "application/{zip,rar,7z*,tar,gzip,xz,zstd,bzip*,lzma,compress,archive,cpio,arj,xar,ms-cab*}", run = "archive" }, |
| 130 | { mime = "application/{debian*-package,redhat-package-manager,rpm,android.package-archive}", run = "archive" }, |
| 131 | { name = "*.{AppImage,appimage}", run = "archive" }, |
| 132 | # Virtual Disk / Disk Image |
| 133 | { mime = "application/{iso9660-image,qemu-disk,ms-wim,apple-diskimage}", run = "archive" }, |
| 134 | { mime = "application/virtualbox-{vhd,vhdx}", run = "archive" }, |
| 135 | { name = "*.{img,fat,ext,ext2,ext3,ext4,squashfs,ntfs,hfs,hfsx}", run = "archive" }, |
| 136 | # Font |
| 137 | { mime = "font/*", run = "font" }, |
| 138 | { mime = "application/ms-opentype", run = "font" }, |
| 139 | # Empty file |
| 140 | { mime = "inode/empty", run = "empty" }, |
| 141 | # Fallback |
| 142 | { name = "*", run = "file" }, |
| 143 | ] |
| 144 | |
| 145 | [input] |
| 146 | cursor_blink = false |
| 147 | |
| 148 | # cd |
| 149 | cd_title = "Change directory:" |
| 150 | cd_origin = "top-center" |
| 151 | cd_offset = [ 0, 2, 50, 3 ] |
| 152 | |
| 153 | # create |
| 154 | create_title = [ "Create:", "Create (dir):" ] |
| 155 | create_origin = "top-center" |
| 156 | create_offset = [ 0, 2, 50, 3 ] |
| 157 | |
| 158 | # rename |
| 159 | rename_title = "Rename:" |
| 160 | rename_origin = "hovered" |
| 161 | rename_offset = [ 0, 1, 50, 3 ] |
| 162 | |
| 163 | # filter |
| 164 | filter_title = "Filter:" |
| 165 | filter_origin = "top-center" |
| 166 | filter_offset = [ 0, 2, 50, 3 ] |
| 167 | |
| 168 | # find |
| 169 | find_title = [ "Find next:", "Find previous:" ] |
| 170 | find_origin = "top-center" |
| 171 | find_offset = [ 0, 2, 50, 3 ] |
| 172 | |
| 173 | # search |
| 174 | search_title = "Search via {n}:" |
| 175 | search_origin = "top-center" |
| 176 | search_offset = [ 0, 2, 50, 3 ] |
| 177 | |
| 178 | # shell |
| 179 | shell_title = [ "Shell:", "Shell (block):" ] |
| 180 | shell_origin = "top-center" |
| 181 | shell_offset = [ 0, 2, 50, 3 ] |
| 182 | |
| 183 | [confirm] |
| 184 | # trash |
| 185 | trash_title = "Trash {n} selected file{s}?" |
| 186 | trash_origin = "center" |
| 187 | trash_offset = [ 0, 0, 70, 20 ] |
| 188 | |
| 189 | # delete |
| 190 | delete_title = "Permanently delete {n} selected file{s}?" |
| 191 | delete_origin = "center" |
| 192 | delete_offset = [ 0, 0, 70, 20 ] |
| 193 | |
| 194 | # overwrite |
| 195 | overwrite_title = "Overwrite file?" |
| 196 | overwrite_content = "Will overwrite the following file:" |
| 197 | overwrite_origin = "center" |
| 198 | overwrite_offset = [ 0, 0, 50, 15 ] |
| 199 | |
| 200 | # quit |
| 201 | quit_title = "Quit?" |
| 202 | quit_content = "The following tasks are still running, are you sure you want to quit?" |
| 203 | quit_origin = "center" |
| 204 | quit_offset = [ 0, 0, 50, 15 ] |
| 205 | |
| 206 | [pick] |
| 207 | open_title = "Open with:" |
| 208 | open_origin = "hovered" |
| 209 | open_offset = [ 0, 1, 50, 7 ] |
| 210 | |
| 211 | [which] |
| 212 | sort_by = "none" |
| 213 | sort_sensitive = false |
| 214 | sort_reverse = false |
| 215 | sort_translit = false |