About • Gallery • Packages • Development
Chafa is a command-line utility that converts image data, including animated GIFs, into graphics formats or ANSI/Unicode character art suitable for display in a terminal. It has broad feature support, allowing it to be used on devices ranging from historical teleprinters to modern terminal emulators and everything in between.
The core functionality is provided by a C library with a public, well-documented API.
Both library and frontend tools are covered by the Lesser GPL license, version 3 or later (LGPLv3+).
The official web pages and C API documentation can be found online. Check out the gallery for screenshots.
Chafa is most likely packaged for your distribution, so if you're not going to hack on it, you're better off using official packages. If you want to build the latest and greatest yourself, read on.
You will need GCC, make, Autoconf, Automake, Libtool and the GLib
development package installed to compile Chafa from its git repository. If
you want to build the command-line tool chafa
and not just the library,
you will additionally need development packages for:
- FreeType2. Often packaged as
libfreetype6-dev
orfreetype2-devel
. - libjpeg (optional). Look for
libjpeg-dev
,libjpeg62-devel
orlibjpeg8-devel
. - librsvg (optional). Look for
librsvg2-dev
orlibrsvg-devel
. - libtiff (optional). Look for
libtiff5-dev
orlibtiff-devel
. - libwebp (optional). Look for
libwebp-dev
orlibwebp-devel
.
If you want to build documentation, you will also need gtk-doc.
Start by cloning the repository:
$ git clone https://github.com/hpjansson/chafa.git
Then cd to the toplevel directory and issue the following shell commands:
$ ./autogen.sh
$ make
$ sudo make install
That should do it!
Erica Ferrua Edwardsdóttir maintains excellent Python bindings for Chafa. If Python's your thing, check them out. They are easy to use and come with a detailed tutorial.
Héctor Molinero Fernández maintains wonderful JavaScript bindings built around his WebAssembly port. These are available from NPM and can be used in Node.js, web browsers, and more.