/eza-themes

Themes for eza

MIT LicenseMIT

eza themes

Themes for eza.

Themes

  • default: Replicates eza's default look.

default theme

  • frosty: Bright and icy tones.

frosty theme

  • black: All black everything.

black theme

  • white: All white everything.

white  theme

  • gruvbox-dark: Classic bright theme, with warm 'retro groove' colors.

gruvbox-dark theme

catppuccin theme

  • onedark: OneDark theme of Atom fame.

onedark theme

dracula theme

gruvbox-light theme

tokyonight theme

Installation

On Linux, simply clone the repository somewhere and symlink a theme to ~/.config/eza/theme.yml:

git clone https://github.com/eza-community/eza-themes.git
mkdir -p ~/.config/eza
ln -sf "$(pwd)/eza-themes/themes/default.yml" ~/.config/eza/theme.yml

Note: on MacOS, eza will look for the theme file in ~/Library/Application Support/eza by default. That directory can be overridden by setting EZA_CONFIG_DIR.

Contributing

Contributions are very welcome! Any improvements you may have to existing themes or any new themes you would like to add are welcome and encouraged. Please submit a PR with your changes, making sure to reflect any changes you made in the README, and please include a screenshot of the proposed theme using the provided test directory to display a wide range of file types.

Usage Hints

Overriding Things

The theme file overrides the default styles, meaning you only need to specify what you want to change.

Environment Variables

EZA_CONFIG_DIR can be used to specify a custom configuration directory. Also, LS_COLORS and EZA_COLORS take precedence over the theme file, so make sure to unset them when using a theme file.

Specification

General

The theme files are written in YAML format and define the visual styling for various elements displayed by eza. This includes colors, text styles, and icons for file listings. The theme system allows for extensive customization to match your preferred aesthetic or to integrate with your terminal's color scheme.

Each theme consists of several sections that correspond to different aspects of the file listing output. These sections include:

filekinds: Styles for different types of files (e.g., directories, symlinks).
perms: Styles for file permissions.
size: Styles for file sizes.
users: Styles for user and group names.
links: Styles for hard links and symlinks.
git: Styles for Git status indicators.
git_repo: Styles for Git repository information.
security_context: Styles for security contexts (e.g., SELinux).
file_type: Styles based on file types (e.g., images, videos).
punctuation, date, inode, blocks, header, octal, flags: Styles for miscellaneous elements.
filenames: Overrides for specific filenames.
extensions: Overrides for specific file extensions.

Style

For each element in the theme file, you can define various style properties:

Colors:
    foreground: Sets the text color.
    background: Sets the background color.
Text Attributes:
    is_bold: Makes the text bold.
    is_dimmed: Dims the text color.
    is_italic: Italicizes the text.
    is_underline: Underlines the text.
    is_blink: Makes the text blink (note: may not be supported in all terminals).
    is_reverse: Swaps foreground and background colors.
    is_hidden: Hides the text (useful for suppressing output).
    is_strikethrough: Adds a strikethrough to the text.
Special Options:
    prefix_with_reset: Resets all styles before applying the new ones. Useful to prevent style bleeding from previous elements.

Example:

filekinds:
  directory:
    foreground: Blue
    is_bold: true
  symlink:
    foreground: Cyan
    is_italic: true

Color

Colors can be specified using either standard color names or hexadecimal color codes.

Standard Colors:
    Basic colors: Black, Red, Green, Yellow, Blue, Magenta, Cyan, White
    Bright variants: BrightBlack, BrightRed, etc.
Hexadecimal Color Codes:
    Format: "#RRGGBB"
    Example: foreground: "#83a598"

Example using named colors:

size:
  number_byte:
    foreground: White
  unit_byte:
    foreground: BrightBlack

Example using hex codes:

git:
  new:
    foreground: "#b8bb26"  # Gruvbox green
  modified:
    foreground: "#fabd2f"  # Gruvbox yellow

File- and Extension-Based Overrides

You can customize the appearance and icons for specific filenames or file extensions, allowing for granular control over how certain files are displayed. Filenames

To override styles for specific filenames:

filenames:
  "Makefile":
    filename:
      foreground: Red
      is_bold: true
    icon:
      glyph: ⚙️
      foreground: Red

In this example, any file named Makefile will have red, bold text and a gear icon in red. Extensions

To override styles for specific file extensions:

extensions:
  "md":
    filename:
      foreground: Blue
    icon:
      glyph: 📘
      foreground: Blue

Files with the .md extension will have blue text and a blue book icon. Icons

Icons can be customized by specifying the glyph and optional style attributes:

filenames:
  "Dockerfile":
    icon:
      glyph: 🐳
      foreground: Cyan

Notes:

Not all glyphs support color changes due to font limitations.
Ensure your terminal font supports the glyphs you choose to avoid display issues.

Additional Notes

Syntax Checking: If your theme isn't working as expected, double-check your YAML syntax. A syntax error can cause multiple properties to fail.
File Naming: The theme file must be named theme.yml, regardless of its directory.
Colorful Flag: At the top of the theme file, the colourful flag can be set to true or false to enable or disable color output globally.