Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

material-eza

Material Design icons for ls. One command installs a Nerd Font, eza, and a Material icon theme — 257 file extensions + 216 file/folder names mapped to Material Design glyphs — and aliases ls/ll/la/lt in your zsh.

󰉋 src        󰌠 main.py       󰛦 app.ts        docker-compose.yml
󰩦 tests      󰗀 index.html   󰅩 data.json    󰂺 README.md

Install

curl (recommended):

curl -fsSL https://raw.githubusercontent.com/deepakmarathe/material-eza/main/install.sh | bash

Homebrew:

brew tap deepakmarathe/material-eza https://github.com/deepakmarathe/material-eza
brew install --HEAD deepakmarathe/material-eza/material-eza
material-eza

npm:

npx material-eza

Then set your terminal font to a Nerd Font (e.g. JetBrainsMono Nerd Font — the installer installs it) and open a new terminal.

Options

install.sh [--no-font] [--no-aliases] [--uninstall]
Flag Effect
--no-font skip the Nerd Font step (you already use one)
--no-aliases install the theme only; leave ~/.zshrc untouched
--uninstall remove the theme + zsh block (keeps eza and fonts)

Env overrides: MATERIAL_EZA_FONT_CASK (brew font cask), MATERIAL_EZA_ZSHRC (rc file to edit).

What it does

  1. Nerd Font — checks for any installed Nerd Font; installs JetBrains Mono Nerd Font if missing (brew cask on macOS, ~/.local/share/fonts on Linux).
  2. eza — installs via brew/apt/dnf/pacman/zypper/cargo if missing.
  3. Theme — installs theme.yml to ~/.config/eza/theme.yml (backs up any existing one). On macOS it also symlinks ~/Library/Application Support/eza/theme.yml, which is where eza actually looks by default there.
  4. zsh — appends one marker-fenced block to ~/.zshrc (idempotent — re-running replaces it):
export EZA_CONFIG_DIR="$HOME/.config/eza"
alias ls='eza --icons=auto'
alias ll='eza -l --icons=auto --git'
alias la='eza -la --icons=auto --git'
alias lt='eza --tree --icons=auto --level=2'

How the mapping stays correct

theme.yml is generated, never hand-edited. scripts/generate.py holds human-readable tables (py → language_python, components → puzzle, …) and resolves every name against Nerd Fonts' official glyphnames.json at build time. An unknown glyph name aborts the build, so a typo can't ship a wrong or missing icon. test/smoke.sh then runs the real eza against a fixture tree and asserts the exact codepoints rendered.

Regenerate after editing the tables:

python3 scripts/generate.py && test/smoke.sh

FAQ

Why don't I see colored VS Code–style folder icons? Terminals render font glyphs, one color per cell — multi-color SVG icons like VS Code's are technically impossible in (almost all) terminals. This is the closest a terminal gets: the Material glyph shapes, tinted by eza's color scheme.

Icons show as boxes (□)? Your terminal font isn't a Nerd Font. Set it in your terminal profile settings.

Why don't icons appear when piping (ls | grep …)? eza disables the theme along with colors for non-TTY output — same behavior as ls colors.

A filetype I use is missing. Unmapped types fall back to eza's built-in icons, so nothing is ever blank. PRs welcome: add a line to the table in scripts/generate.py, regenerate, done.

bash/fish? The theme itself works in any shell (macOS symlink covers the default path; on Linux ~/.config/eza is the default). Only the alias block is zsh-specific — add equivalent aliases to your shell's rc.

License

MIT. Glyphs are Material Design Icons (Apache-2.0) via Nerd Fonts (MIT); this repo ships only codepoint mappings, not fonts.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages