theme.toml
If you're looking for ready-made themes and don't want to create one yourself, check out the yazi-rs/flavors repository.
Types
Color
A color. It can be in Hex format with RGB values, such as "#484D66"
. Or can be one of the following 17 values:
"reset"
"black"
"white"
"red"
"lightred"
"green"
"lightgreen"
"yellow"
"lightyellow"
"blue"
"lightblue"
"magenta"
"lightmagenta"
"cyan"
"lightcyan"
"gray"
"darkgray"
Style
Appears in a format similar to { fg = "#e4e4e4", bg = "black", ... }
, and supports the following properties:
- fg (Color): Foreground color
- bg (Color): Background color
- bold (Boolean): Bold
- dim (Boolean): Dim (not supported by all terminals)
- italic (Boolean): Italic
- underline (Boolean): Underline
- blink (Boolean): Blink
- blink_rapid (Boolean): Rapid blink
- reversed (Boolean): Reversed foreground and background colors
- hidden (Boolean): Hidden
- crossed (Boolean): Crossed out
[flavor]
See flavor documentation for more details.
dark
Flavor name used in dark mode, e.g. "dracula"
.
Type | string |
light
Flavor name used in light mode, e.g. "gruvbox"
.
Type | string |
[mgr]
cwd
CWD text style.
Type | Style |
hovered
Hovered file style.
Type | Style |
preview_hovered
Hovered file style, in the preview pane.
Type | Style |
find_keyword
Style of the highlighted portion in the filename.
Type | Style |
find_position
Style of current file location in all found files to the right of the filename.
Type | Style |
marker_copied
Copied file marker style.
Type | Style |
marker_cut
Cut file marker style.
Type | Style |
marker_marked
Marker style of pre-selected file in visual mode.
Type | Style |
marker_selected
Selected file marker style.
Type | Style |
count_copied
Style of copied file number.
Type | Style |
count_cut
Style of cut file number.
Type | Style |
count_selected
Style of selected file number.
Type | Style |
border_symbol
Border symbol, e.g. "│"
.
Type | string |
border_style
Border style.
Type | Style |
syntect_theme
Code preview highlighting themes, which are paths to .tmTheme
files. You can find them on GitHub using "tmTheme" as a keyword
For example, "~/Downloads/Dracula.tmTheme"
, not available after using a flavor, as flavors always use their own tmTheme files tmtheme.xml
.
Type | string |
[tabs]
Explanation of active
and inactive

active
Active tab style.
Type | Style |
inactive
Inactive tab style.
Type | Style |
sep_inner
Inner separator symbol, e.g. { open = "[", close = "]" }
.
Type | { open: string, close: string } |
sep_outer
Outer separator symbol, e.g. { open = "", close = "" }
.
Type | { open: string, close: string } |
[mode]
normal_main
Normal mode main style.
Type | Style |
normal_alt
Normal mode alternative style.
Type | Style |
select_main
Select mode main style.
Type | Style |
select_alt
Select mode alternative style.
Type | Style |
unset_main
Unset mode main style.
Type | Style |
unset_alt
Unset mode alternative style.
Type | Style |
[status]
Explanation of sep_left
and sep_right

overall
Overall status bar style.
Type | Style |
sep_left
Left separator symbol, e.g. { open = "", close = "]" }
.
Type | { open: string, close: string } |
sep_right
Right separator symbol, e.g. { open = "[", close = "" }
.
Type | { open: string, close: string } |
perm_type
Style of the file type symbol, such as d
for directory, -
for file, l
for symlink, etc.
Type | Style |
perm_read
Style of the read permission symbol (r
).
Type | Style |
perm_write
Style of the write permission symbol (w
).
Type | Style |
perm_exec
Style of the execute permission symbol (x
).
Type | Style |
perm_sep
Style of the permission separator symbol (-
).
Type | Style |
progress_label
Progress label style.
Type | Style |
progress_normal
Style of the progress bar when it is not in an error state.
Type | Style |
progress_error
Style of the progress bar when an error occurs.
Type | Style |
[which]
cols
Number of columns.
Type | 1 | 2 | 3 |
mask
Mask style.
Type | Style |
cand
Candidate key style.
Type | Style |
rest
Rest key style.
Type | Style |
desc
Description style.
Type | Style |
separator
Separator symbol, e.g. " -> "
.
Type | string |
separator_style
Separator style.
Type | Style |
[confirm]
border
Border style.
Type | Style |
title
Title style.
Type | Style |
content
Content style.
Type | Style |
list
List style, which is the style of the list of items below the content.
Type | Style |
btn_yes
The style of the yes button.
Type | Style |
btn_no
The style of the no button.
Type | Style |
btn_labels
Labels for the yes and no buttons.
The first string is the label for the yes button and the second is the label for the no button.
Type | [string, string] |
[spot]
Explanation of tbl_col
and tbl_cell

border
Border style.
Type | Style |
title
Title style.
Type | Style |
tbl_col
The style of the selected column in the table.
Type | Style |
tbl_cell
The style of the selected cell in the table.
Type | Style |
[notify]
title_info
Style of the info title.
Type | Style |
title_warn
Style of the warning title.
Type | Style |
title_error
Style of the error title.
Type | Style |
[pick]
border
Border style.
Type | Style |
active
Selected item style.
Type | Style |
inactive
Unselected item style.
Type | Style |
[input]
border
Border style.
Type | Style |
title
Title style.
Type | Style |
value
Value style.
Type | Style |
selected
Selected value style.
Type | Style |
[cmp]
border
Border style.
Type | Style |
active
Selected item style.
Type | Style |
inactive
Unselected item style.
Type | Style |
icon_file
File icon.
Type | string |
icon_folder
Folder icon.
Type | string |
icon_command
Command icon.
Type | string |
[tasks]
border
Border style.
Type | Style |
title
Title style.
Type | Style |
hovered
Hovered item style.
Type | Style |
[help]
on
Key column style.
Type | Style |
run
Command column style.
Type | Style |
desc
Description column style.
Type | Style |
hovered
Hovered item style.
Type | Style |
footer
Footer style.
Type | Style |
icon_info
Info icon.
Type | string |
icon_warn
Warning icon.
Type | string |
icon_error
Error icon.
Type | string |
[filetype]
Set file list item display styles for specific file types, supporting matching by name and mime-type:
[filetype]
rules = [
# Images
{ mime = "image/*", fg = "yellow" },
# Videos
{ mime = "video/*", fg = "magenta" },
{ mime = "audio/*", fg = "magenta" },
# Empty files
{ mime = "inode/empty", fg = "cyan" },
# Orphan symbolic links
{ name = "*", is = "orphan", fg = "red" },
# ...
# Fallback
# { name = "*", fg = "white" },
{ name = "*/", fg = "blue" }
]
Each rule supports complete Style properties. There are two special rule:
name = "*"
matches all files.name = "*/"
matches all directories.
You can restrict the specific type of files through is
, noting that it must be used with either name
or mime
. It accepts the following values:
block
: Block devicechar
: Char deviceexec
: Executablefifo
: FIFOlink
: Symbolic linkorphan
: Orphan symbolic linksock
: Socketsticky
: File with sticky bit set
[icon]
Yazi has builtin support for nvim-web-devicons, a rich set of icons ready to use.
If you want to add your own rules to this set, you can use prepend_*
and append_*
to prepend or append rules to the default ones (see Configuration Mixing for details):
[icon]
prepend_dirs = [
{ name = "desktop", text = "", fg = "#563d7c" },
# ...
]
append_exts = [
{ name = "mp3", text = "", fg = "#00afff" },
# ...
]
# ...
If you want to completely override the default rules, you can do so with:
[icon]
dirs = [
{ name = "desktop", text = "", fg = "#563d7c" },
# ...
]
exts = [
{ name = "mp3", text = "", fg = "#00afff" },
# ...
]
# ...
Each icon rule contains the following properties:
name
(globs, dirs, files, exts), orif
(conds): the rule itself, which is a stringtext
: icon text, which is a stringfg
: icon color, which is a Color
Icons are matched according to the following priority:
- globs: glob expressions, e.g.,
{ name = "**/Downloads/*.zip", ... }
- dirs: directory names, e.g.,
{ name = "Desktop", ... }
- files: file names, e.g.,
{ name = ".bashrc", ... }
- exts: extensions, e.g.,
{ name = "mp3", ... }
- conds: conditions, e.g.,
{ if = "!dir", ... }
dirs
, files
, and exts
are compiled into a HashMap at startup, offering O(1) time complexity for very fast lookups, which should meet most needs.
For more complex and precise rules, such as matching a specific file in a specific directory, use globs
- these are always executed first to check if any rules in the glob set are met.
However, they are much slower than dirs
, files
, and exts
, so it's not recommended to use them excessively.
If none of the above rules match, it will fall back to conds
to check if any specific conditions are met. conds
are mostly used for rules related to file metadata, which includes the following conditional factors:
dir
: The file is a directoryhidden
: The file is hiddenlink
: The file is a symbolic linkorphan
: The file is an orphan (broken symbolic link)dummy
: The file is dummy (failed to load complete metadata, possibly the filesystem doesn't support it, such as FUSE)block
: The file is a block devicechar
: The file is a char devicefifo
: The file is a FIFOsock
: The file is a socketexec
: The file is executablesticky
: The file has the sticky bit set
These conditions support basic |
(or), &
(and), !
(not), and ()
for priority, so you can combine them as needed, for example:
[icon]
prepend_conds = [
{ if = "hidden & dir", text = "👻" }, # Hidden directories
{ if = "dir", text = "📁" }, # Directories
{ if = "!(dir | link)", text = "📄" }, # Normal files (not directories or symlinks)
]