lla provides a powerful and flexible theming system that allows you to customize the appearance of your file listings. Each theme is defined in a TOML file and can customize colors for files, folders, permissions, and more.
lla ships with a default theme collection, you can pull all builtin themes with the following command:
lla theme pull # pull all builtin themes
you can also install custom themes using the following command:
lla theme install /path/to/theme.toml
# or a directory with multiple themes
lla theme install /path/to/themes/
- Theme Location
- Theme Structure
- Color Formats
- Basic Elements
- Special Files
- Extension System
- Built-in Themes
- Usage
Themes are stored in ~/.config/lla/themes/
with a .toml
extension:
~/.config/lla/themes/
├── dark.toml
├── light.toml
├── poimandres.toml
└── custom.toml
A theme file has the following main sections:
# Theme metadata
name = "my_theme"
author = "Your Name"
description = "A description of your theme"
# Core colors for basic elements
[colors]
file = "#FFFFFF"
directory = "#89AFFF"
...
# Special file rules
[special_files]
...
# Extension-based colors
[extensions]
...
lla supports multiple color formats for maximum flexibility:
[colors]
# 1. Named Colors (Basic terminal colors)
file = "white"
directory = "blue"
symlink = "bright_cyan"
# 2. RGB Format
file = { r = 255, g = 255, b = 255 }
directory = { r = 81, g = 154, b = 255 }
# 3. Hex Format
file = "#FFFFFF" # 6-digit hex
directory = "#89F" # 3-digit hex
symlink = "#89DBFFFF" # 8-digit hex (alpha ignored)
# 4. HSL Format (h: 0-360, s: 0-1, l: 0-1)
directory = { h = 180, s = 0.5, l = 0.6 }
# 5. No Color
disabled = "none"
Basic Colors:
black
,red
,green
,yellow
,blue
,magenta
,cyan
,white
Bright Variants:
bright_black
(orgray
/grey
)bright_red
,bright_green
,bright_yellow
bright_blue
,bright_magenta
,bright_cyan
,bright_white
Additional Colors:
navy
,teal
,maroon
,purple
,olive
,silver
The [colors]
section defines the core colors:
[colors]
# Core UI Elements
file = "#FFFFFF" # Regular files
directory = "#89AFFF" # Directories
symlink = "#89DBFF" # Symbolic links
executable = "#5DE4B3" # Executable files
# Metadata
size = "#5DE4B3" # File sizes
date = "#FCBCFA" # Timestamps
user = "#D0679D" # User names
group = "#8A9092" # Group names
# Permissions
permission_dir = "#89AFFF" # Directory permission
permission_read = "#5DE4B3" # Read permission
permission_write = "#FFFFC2" # Write permission
permission_exec = "#D0679D" # Execute permission
permission_none = "#282E30" # No permission
The [special_files]
section allows you to define custom colors for specific files and patterns:
[special_files.folders]
# Exact folder names
"node_modules" = "#666666" # Dim gray for node modules
"target" = "#444444" # Dark gray for build outputs
".git" = "#FF6B6B" # Red for git directory
# Folder patterns
"build*" = "#444444" # Any folder starting with "build"
"*.cache" = "#666666" # Any folder ending with ".cache"
"*-env" = "#5DE4B3" # Any folder ending with "-env"
[special_files.dotfiles]
".gitignore" = "#89DBFF"
".env" = "#FFFFC2"
".dockerignore" = "#89DBFF"
[special_files.exact_match]
"Dockerfile" = "#89DBFF"
"Makefile" = "#D0679D"
"README.md" = "#FFFFC2"
[special_files.patterns]
"*rc" = "#89DBFF" # Files ending in "rc"
"*.min.*" = "#282E30" # Minified files
"*.test.*" = "#5DE4B3" # Test files
The extension system provides two ways to define colors for file extensions:
Group related extensions together:
[extensions.groups]
# Group multiple extensions
rust = ["rs", "toml"]
web = ["html", "css", "js"]
docs = ["md", "rst", "txt"]
# Define colors for groups
[extensions.colors]
rust = "#FF5733" # All rust-related files
web = "#61AFEF" # All web files
docs = "#98C379" # All documentation files
# Override specific extensions
rs = "#FF0000" # Override just .rs files
When determining a file's color, lla follows this priority:
-
If it's a directory:
- Exact folder name match
- Folder pattern match
- Default directory color
-
If it's a file:
- Exact filename match
- Dotfile match
- Pattern match
- Extension-specific color
- Extension group color
- Default file color
lla includes several pre-configured themes:
- default: Traditional terminal colors with carefully selected colors for optimal visibility
- dark: Modern dark theme with enhanced visibility and rich colors for dark terminals
- light: Clean theme optimized for light terminals with maximum readability
- ayu_dark: Dark theme inspired by the Ayu Dark color scheme, featuring deep backgrounds and vibrant accents
- ayu_light: Light theme with carefully selected colors for optimal readability
- ayu_mirage: Refined dark theme with muted colors and soft contrasts
- catppuccin_mocha: A soothing pastel theme for the high-spirited, featuring warm, cozy colors
- circuit_dreams: A theme inspired by vintage circuit boards and electronic components
- cosmic_night: A sophisticated dark theme with cosmic-inspired colors and nebula accents
- deep_sea: An ocean-inspired theme featuring the colors of marine depths
- dracula: Classic Dracula color scheme with vibrant colors and high contrast
- forest_depths: A theme inspired by the depths of an ancient forest at twilight
- gruvbox_dark: Retro groove color scheme with warm, earthy tones and high contrast
- material_ocean: Deep blue theme based on Material Design, featuring oceanic colors
- moonlight: A minimal theme with subtle blue-gray tones inspired by moonlit nights
- neon_dreams: A vibrant cyberpunk theme featuring electric neons and digital gradients
- nord: Arctic, north-bluish color palette with elegant pastel colors
- one_dark: Dark theme inspired by Atom, featuring a perfect balance of cool and warm colors
- poimandres: Deep space aesthetic with vibrant accents
- synthwave_84: A retro-computing theme inspired by 1980s aesthetics
- tokyo_night: Dark theme inspired by the vibrant lights of Tokyo at night
- vesper: Minimalist dark theme with warm accents
- zen: A minimal monochromatic theme emphasizing simplicity and clarity
Set your theme in ~/.config/lla/config.toml
:
theme = "dark" # Without .toml extension
Or use the command line:
lla config --set theme dark
To disable colors:
lla config --set theme none
or if you don't want any colors you can add "--no-colors" flag to lla:
lla --no-colors # works with all listing commands