Documentation Index
Fetch the complete documentation index at: https://mintlify.com/sxyazi/yazi/llms.txt
Use this file to discover all available pages before exploring further.
The theme.toml file controls Yazi’s visual appearance including colors, text styles, and icons.
File Location
- Unix-like systems:
~/.config/yazi/theme.toml
- Windows:
%AppData%\yazi\config\theme.toml
Dark and Light Themes
Yazi automatically loads different default themes based on your terminal’s color mode:
- Dark mode:
theme-dark.toml is used as the base
- Light mode:
theme-light.toml is used as the base
Your theme.toml overrides settings in both default themes.
Flavors for Advanced Theming
For more granular control over light and dark modes, use flavors:
[flavor]
dark = "catppuccin-mocha"
light = "catppuccin-latte"
Then create separate flavor files in ~/.config/yazi/flavors/.
Style Syntax
Styles are defined using TOML tables with the following fields:
Foreground color. See Colors section.
Background color. See Colors section.
Underlined text when true
Swap foreground and background colors when true
Colors
Colors can be specified as:
- Named colors:
black, red, green, yellow, blue, magenta, cyan, white, gray
- Light variants:
lightred, lightgreen, lightyellow, lightblue, lightmagenta, lightcyan
- Dark variants:
darkgray, darkred, darkgreen, darkyellow, darkblue, darkmagenta, darkcyan
- RGB hex:
#RRGGBB (e.g., #ff0000 for red)
- Special:
reset to use terminal default
Example Styles
# Simple color
cwd = { fg = "cyan" }
# Multiple attributes
find_keyword = { fg = "yellow", bold = true, italic = true }
# Background color
marker_copied = { fg = "lightgreen", bg = "lightgreen" }
# Reversed colors
active = { reversed = true }
# Empty style
overall = {}
Configuration Sections
[flavor] - Theme Flavors
[flavor]
dark = "" # Flavor for dark mode (empty = use default)
light = "" # Flavor for light mode (empty = use default)
[app] - Overall App Style
[app]
overall = {} # Overall app styling
[mgr] - File Manager
[mgr]
cwd = { fg = "cyan" } # Current working directory
# Find
find_keyword = { fg = "yellow", bold = true, italic = true, underline = true }
find_position = { fg = "magenta", bg = "reset", bold = true, italic = true }
# Symlinks
symlink_target = { italic = true }
# Selection markers
marker_copied = { fg = "lightgreen", bg = "lightgreen" }
marker_cut = { fg = "lightred", bg = "lightred" }
marker_marked = { fg = "lightcyan", bg = "lightcyan" }
marker_selected = { fg = "lightyellow", bg = "lightyellow" }
marker_symbol = "│"
# Counts
count_copied = { fg = "white", bg = "green" }
count_cut = { fg = "white", bg = "red" }
count_selected = { fg = "black", bg = "yellow" }
# Borders
border_symbol = "│"
border_style = { fg = "gray" }
# Syntax highlighting theme (for code preview)
syntect_theme = ""
[tabs] - Tab Bar
[tabs]
active = { bg = "blue", bold = true }
inactive = { fg = "blue", bg = "gray" }
# Tab separators
sep_inner = { open = "", close = "" }
sep_outer = { open = "", close = "" }
[mode] - Mode Indicator
[mode]
# Normal mode
normal_main = { bg = "blue", bold = true }
normal_alt = { fg = "blue", bg = "gray" }
# Select mode
select_main = { bg = "red", bold = true }
select_alt = { fg = "red", bg = "gray" }
# Unset mode
unset_main = { bg = "red", bold = true }
unset_alt = { fg = "red", bg = "gray" }
[indicator] - File Indicator
[indicator]
parent = { reversed = true }
current = { reversed = true }
preview = { underline = true }
padding = { open = "", close = "" }
[status] - Status Bar
[status]
overall = {}
sep_left = { open = "", close = "" }
sep_right = { open = "", close = "" }
# File permissions
perm_sep = { fg = "darkgray" }
perm_type = { fg = "green" }
perm_read = { fg = "yellow" }
perm_write = { fg = "red" }
perm_exec = { fg = "cyan" }
# Progress bars
progress_label = { bold = true }
progress_normal = { fg = "green", bg = "black" }
progress_error = { fg = "yellow", bg = "red" }
[which]
cols = 3
mask = { bg = "black" }
cand = { fg = "lightcyan" }
rest = { fg = "darkgray" }
desc = { fg = "lightmagenta" }
separator = " "
separator_style = { fg = "darkgray" }
[confirm] - Confirmation Dialog
[confirm]
border = { fg = "blue" }
title = { fg = "blue" }
body = {}
list = {}
btn_yes = { reversed = true }
btn_no = {}
btn_labels = [" [Y]es ", " (N)o "]
[spot] - File Details Spotter
[spot]
border = { fg = "blue" }
title = { fg = "blue" }
# Table
tbl_col = { fg = "blue" }
tbl_cell = { fg = "yellow", reversed = true }
[notify] - Notifications
[notify]
title_info = { fg = "green" }
title_warn = { fg = "yellow" }
title_error = { fg = "red" }
icon_info = ""
icon_warn = ""
icon_error = ""
[pick] - Picker Dialog
[pick]
border = { fg = "blue" }
active = { fg = "magenta", bold = true }
inactive = {}
[input]
border = { fg = "blue" }
title = {}
value = {}
selected = { reversed = true }
[cmp]
border = { fg = "blue" }
active = { reversed = true }
inactive = {}
icon_file = ""
icon_folder = ""
icon_command = ""
[tasks] - Task Manager
[tasks]
border = { fg = "blue" }
title = {}
hovered = { fg = "magenta", bold = true }
[help]
on = { fg = "cyan" }
run = { fg = "magenta" }
desc = {}
hovered = { reversed = true, bold = true }
footer = { fg = "black", bg = "white" }
[filetype] - File Type Colors
Define colors for different file types:
[filetype]
rules = [
# Images
{ mime = "image/*", fg = "yellow" },
# Media
{ mime = "{audio,video}/*", fg = "magenta" },
# Archives
{ mime = "application/{zip,rar,7z*,tar,gzip}", fg = "red" },
# Documents
{ mime = "application/{pdf,doc,rtf}", fg = "cyan" },
# VFS files
{ mime = "vfs/{absent,stale}", fg = "gray" },
# Special files
{ url = "*", is = "orphan", bg = "red" },
{ url = "*", is = "exec", fg = "green" },
{ url = "*", is = "dummy", bg = "red" },
# Directories
{ url = "*/", fg = "blue" },
]
Rule fields:
mime - Match by MIME type pattern
url - Match by URL pattern
is - Match by file property: orphan, exec, dummy, link, block, char, fifo, sock, sticky
fg - Foreground color
bg - Background color
[icon] - File and Folder Icons
Define custom icons for files and folders:
[icon]
globs = [] # Reserved for future use
# Directory icons
dirs = [
{ name = ".config", text = "", fg = "#ff9800" },
{ name = ".git", text = "", fg = "#00bcd4" },
{ name = "Downloads", text = "", fg = "#00bcd4" },
]
# File icons by name
files = [
{ name = "README.md", text = "", fg = "#ededed" },
{ name = "Makefile", text = "", fg = "#6d8086" },
{ name = "package.json", text = "", fg = "#e8274b" },
]
# File icons by extension
exts = [
{ name = "rs", text = "", fg = "#dea584" },
{ name = "js", text = "", fg = "#cbcb41" },
{ name = "py", text = "", fg = "#ffbc03" },
{ name = "md", text = "", fg = "#dddddd" },
]
# Icons by file condition
conds = [
{ if = "dir", text = "", fg = "#03a9f4" },
{ if = "exec", text = "", fg = "#8bc34a" },
{ if = "link", text = "", fg = "#9e9e9e" },
{ if = "orphan", text = "", fg = "#ffffff" },
{ if = "!dir", text = "", fg = "#ffffff" },
]
Icon conditions (if field):
dir - Directories
exec - Executable files
link - Symbolic links
orphan - Broken symlinks
block - Block devices
char - Character devices
fifo - Named pipes
sock - Sockets
sticky - Files with sticky bit
dummy - Dummy files
!dir - Non-directories (fallback)
Complete Example
"$schema" = "https://yazi-rs.github.io/schemas/theme.json"
[flavor]
dark = ""
light = ""
[mgr]
cwd = { fg = "cyan" }
find_keyword = { fg = "yellow", bold = true }
marker_selected = { fg = "lightyellow", bg = "lightyellow" }
border_style = { fg = "gray" }
[tabs]
active = { bg = "blue", bold = true }
inactive = { fg = "blue", bg = "gray" }
[status]
progress_normal = { fg = "green", bg = "black" }
[filetype]
rules = [
{ mime = "image/*", fg = "yellow" },
{ mime = "video/*", fg = "magenta" },
{ url = "*/", fg = "blue" },
]
[icon]
exts = [
{ name = "rs", text = "", fg = "#dea584" },
{ name = "js", text = "", fg = "#cbcb41" },
]
conds = [
{ if = "dir", text = "", fg = "#03a9f4" },
{ if = "!dir", text = "", fg = "#ffffff" },
]
Tips
Using Nerd Fonts
Many icon glyphs require Nerd Fonts. Make sure your terminal uses a Nerd Font to display icons correctly.
Color Schemes
Popular color schemes for Yazi:
- Catppuccin: Soothing pastel theme
- Tokyo Night: Dark theme inspired by Tokyo’s night
- Nord: Arctic, north-bluish color palette
- Gruvbox: Retro groove color scheme
Check the Yazi Flavors for pre-made themes.
Testing Colors
To test your theme changes:
- Save your
theme.toml
- Reload Yazi (or restart it)
- Check the appearance
- Iterate on colors until satisfied
See Also