No description
  • C 92.3%
  • C++ 3.9%
  • Shell 1.6%
  • M4 1.1%
  • Python 0.6%
  • Other 0.5%
Find a file
2026-08-21 12:02:18 +03:00
.github/workflows ci: Don't error out on unrecognized attributes 2025-09-14 00:56:51 +02:00
chafa build: Bump soversion for 1.18.2 2026-04-29 19:58:19 +02:00
docs chafa: Optionally probe the ctty. Add --probe-mode to control this 2026-02-04 22:23:15 +01:00
examples examples: Detect passthrough and symbols, too 2025-05-04 16:07:55 +02:00
libnsgif libnsgif: Tighten bounds checks in extension parser 2026-04-29 19:52:58 +02:00
lodepng loaders: Tighten memory limits a bit 2025-07-22 00:01:40 +02:00
tests ChafaSymbolRenderer: Store indexed colors correctly in FGBG mode 2026-04-29 19:50:48 +02:00
tools fix kitty aspect ratio when using inside zellij 2026-08-21 11:53:33 +03:00
.gitattributes Add .gitattributes for CRLF auto conversion 2025-08-09 16:01:14 +02:00
.gitignore Add another file from gtkdocize to .gitignore 2024-08-11 16:39:41 +02:00
.travis.yml ci: Allow unused const variables too 2022-12-07 16:08:02 -06:00
acinclude.m4 Replace obsolte autofoo macros 2021-09-20 16:15:19 +02:00
AUTHORS AUTHORS: Add new contributors 2025-05-18 17:04:34 +02:00
autogen.sh build: prevent literal "\e" from appearing 2025-09-03 11:56:44 -06:00
chafa.pc.in libchafa: Move bogus -lm from .pc file's Libs to Libs.private 2022-07-01 19:28:01 +02:00
configure.ac Prepare for 1.18.2 release 2026-04-29 23:28:03 +02:00
COPYING Add full GPLv3 text; the LGPL depends on it. 2018-03-11 03:54:46 +01:00
COPYING.LESSER Add full GPLv3 text; the LGPL depends on it. 2018-03-11 03:54:46 +01:00
HACKING docs: Add tests dir to the HACKING doc 2022-06-04 17:45:22 +02:00
Makefile.am build: fix a typo, msudo -> sudo 2025-09-30 16:16:56 -06:00
NEWS Add news for 1.18.2 2026-04-29 19:58:32 +02:00
NOTES-aspect-fix.md fix whitespace 2026-08-21 12:02:18 +03:00
README doc: Update plain-text README to agree with the MD version 2023-08-04 20:19:59 +02:00
README.md README: Add link to JavaScript bindings 2024-01-23 19:32:59 +01:00
SECURITY.md general: Add a security policy document 2022-04-21 20:55:09 +02:00
TODO TODO: Remove obsolete items 2025-06-11 01:00:08 +02:00

Master Build StatusLatest ReleaseFriendly Chat

AboutGalleryPackagesDevelopment

About

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.

Installing

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 or freetype2-devel.
  • libjpeg (optional). Look for libjpeg-dev, libjpeg62-devel or libjpeg8-devel.
  • librsvg (optional). Look for librsvg2-dev or librsvg-devel.
  • libtiff (optional). Look for libtiff5-dev or libtiff-devel.
  • libwebp (optional). Look for libwebp-dev or libwebp-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!

Python bindings

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.

JavaScript bindings

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.