Skip to content

Use any fonts in the terminal without replacing or patching

License

Notifications You must be signed in to change notification settings

sebastiencs/icons-in-terminal

Folders and files

NameName
Last commit message
Last commit date
Jul 26, 2017
Jul 26, 2017
May 25, 2017
Jul 27, 2017
May 25, 2017
Apr 29, 2017
Jul 26, 2017
Jul 25, 2017
Jul 13, 2017
Jul 26, 2017
Jul 26, 2017
Jul 26, 2017
Jul 26, 2017

Repository files navigation

ls

Overview

  • 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

Installation

$ git clone https://github.com/sebastiencs/icons-in-terminal.git

To install icons-in-terminal, run:

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

Or if your terminal is supported (Experimental)

$ ./install-autodetect.sh 

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

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

To use icons in your terminal, do not copy-paste icons from the output of print_icons.sh 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.

Building

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:

$ ./build.sh

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

Screenshots

Screenshot the included icons Screenshot with fish

Integrations

Fish integration

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

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

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/icons_bash.sh

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

ls

https://github.com/sebastiencs/ls-icons

emacs

https://github.com/sebastiencs/sidebar.el

Todos

  • Integrate with differents shells

About

Use any fonts in the terminal without replacing or patching

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published