exa can display icons next to file names, to make them easier to distinguish. The icons are special Unicode symbols, and as such, they require the font being used to have the correct glyphs in it.

To enable icons, use the --icons command-line option.

A screenshot of exa with icons next to the file names.

My icons aren’t working!

The icon characters must be present in the font you are using in your terminal — it is the font, rather than exa or your terminal emulator, that contains the icons. The majority of fonts you’ll find on the Internet will probably not include these glyphs by default.

A good solution to this problem is the Nerd Fonts project, which patches existing fixed-width fonts with the necessary icons (as well as many other icons, such as the Powerline set).

If you cannot find a Nerd Font for your favourite typeface, your terminal emulator may have an option to draw non-ASCII characters in a different font.

Why are there Unicode codepoints for file types?

The icon codepoints exist within the Private Use Area of the Unicode Basic Multilingual Plane, in the range U+E000 to U+F8FF. Fonts are free to define whichever glyphs they like in this area, as they are guaranteed to never conflict with existing characters. You will sometimes find brands and other logos embedded within fonts that exist within this range. The codepoint numbers for the file types and logos used by exa are standardised by convention among terminal application developers.

You can see the full list of codepoint ranges on the Nerd Fonts Wiki.