AdamWagner / icons-in-terminal

Use any fonts in the terminal without replacing or patching

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool


Changes in fork


  • icons-in-terminal allows you to get any fonts in your terminal without replacing or patching your font.
  • You can add as many fonts as you want easily, you just need the ttf/odf file and add it to config.json.
  • icons-in-terminal can also be use with graphical applications.

Table of Contents

  1. Installation
  2. Building
  3. How it works
  4. Included icons
  5. Screenshots
  6. Integrations
  7. Projects using icons-in-terminal
  8. Todos


$ git clone

To install icons-in-terminal, run:

$ ./  
$ # Follow the instructions to edit ~/.config/fontconfig/conf.d/30-icons.conf

Or if your terminal is supported (Experimental)

$ ./ 

Done ! You can start a new terminal and run to see the installed gryphs.
You can see names of each icon by giving any parameter to

$ ./
$ ./ --names
$ ./ --names | grep ANY_NAME

To use icons in your terminal, do not copy-paste icons from the output of but use their variable name: see integrations.
When one of the provided font will be updated and add new icons, some codepoints in icons-in-terminal.ttf will be changed, the variable names won't.


If you want to add new font, follow these instructions:

There are a few dependencies to install:

You can add the name and path of your font to the file config.json.
Each font can take parameters:

  • start-from: exclude all glyphes before the given codepoint.
  • until: exclude all glyphes at the given codepoint and after.
  • excludes: exclude the given codepoints.
  • move-vertically: Use this parameter if your font and its glyphes are not centered vertically.
  • short-name: Prefix to insert before the glyph name when you want to use the icon in your shell or anywhere else
  • map-names: Define a name to the glyph. If not provided, the name will be read from the ttf file

Once done, you can run:

$ ./

How it works

This project is inspired by awesome-terminal-fonts but is different.
I don't modify any existing font, I merge all glyphes from the provided fonts in a new font file and insert them in the private use areas.
The file ~/.config/fontconfig/conf.d/30-icons.conf tells to freetype to search the glyph in icons-in-terminal.ttf if it fails in your default font file. As the codepoints generated are in the private use areas, freetype should always fail and fallback to icons-in-terminal.ttf
The only requirement is that your default font shouldn't be already patched/modified. But why use a patched font with a limited number of glyphes when they are all included here :)
Your terminal emulator should also support fallback font (most of them support it)

Included icons

There are already 3618 glyphes included:

Name Version Notes
powerline-extra-symbols commit 4eae6e8
octicons 4.4.0
fontawesome 4.7
material-design-icons 3.0.1
file-icons 2.1.4
weather-icons 2.0.10
font-linux 0.9
devicons 1.8.0
Pomicons commit bb0a579
linea 1.0
font-mfizz 2.4.1
FiraCode 1.200 See if your terminal is compatible


Screenshot the included icons Screenshot with fish


Fish integration

To use icons-in-terminal with fish, add this line to ~/.config/fish/

source ~/.local/share/icons-in-terminal/

Restart a terminal, now you can print any icons with its name:

$ echo $oct_location

Bash integration

Add this line to your .bashrc:

source ~/.local/share/icons-in-terminal/

Restart a terminal, now you can print any icons with its name:

$ echo -e $oct_location # note the '-e'

Emacs integration

Add this line to your emacs init file:

(add-to-list 'load-path "~/.local/share/icons-in-terminal/")

To use icons-in-terminal in your package:

(require 'icons-in-terminal)
(insert (icons-in-terminal 'oct_flame)) ; C-h f icons-in-terminal[RET] for more info

Projects using icons-in-terminal




  • Integrate with differents shells
ezoic increase your site revenue


Use any fonts in the terminal without replacing or patching

License:MIT License


Language:Shell 61.9%Language:Emacs Lisp 19.6%Language:C 17.7%Language:Python 0.8%