28

Chafa 1.4.0: Now with sixels

 4 years ago
source link: https://hpjansson.org/blag/2020/04/01/chafa-1-4-0-now-with-sixels/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

April 1st seems like as good a time as any for a newChafa release though note that Chafa is no joke. At least not anymore, what with the extremely enterprise-ready sixel pipeline and all.

As usual, you can get it from the download page or from Github . There are also release notes . Here are the highlights:

Sixel output

RJNz2qm.jpg!web

Thanks to this 90s-era technology, you can print excellent-looking graphics directly in the terminal with no need for character cell mosaics or hacky solutions like w3mimagedisplay (from w3m ) or Überzug . It works entirely using ANSI escape sequence extensions, so it’s usable over ssh, telnet and that old 2400 baud modem you found in grandma’s shed.

The most complete existing implementation is probably Hayaki Saito’s libsixel , but I chose to write one from scratch for Chafa, since sixel output is remarkably intensive computationally, and I wanted to employ a combination of advanced techniques (parallelism, quantization using a PCA approach, SIMD scaling) and corner-cutting that wouldn’t have been appropriate in that library. This gets me fast animation playback and makes it easier to phase out the ImageMagick dependency in the long term.

There are at least two widely available virtual terminals that support sixels: One is XTerm (when compiled with --enable-sixel ), and the other is mlterm. Unfortunately, I don’t think either is widely used compared to distribution defaults like GNOME Terminal and Konsole, so here’s hoping for more mainstream support for this feature.

Glyph import

Z3UzieM.png!web

If sixels aren’t your cup of tea, symbol mode has a new trick for you too. It’s --glyph-file , which allows you to load glyphs from external fonts into Chafa’s symbol map. This can give it a better idea of what your terminal font looks like and allows support for more exotic symbols or custom fonts to suit any respectable retro graphics art project.

Keep in mind that you still need to select the appropriate symbol ranges with --symbols and/or --fill . These options now allow specifying precise Unicode ranges, e.g. --symbols 20,41..5a to emit only ASCII spaces and uppercase letters.

Color extraction

3IFfIrQ.gif

In symbol mode, each cell’s color pair is now based on the median color of the underlying pixels instead of the average. Now this isn’t exactly a huge feature, at least not in terms of effort, but it can make a big difference for certain images, especially line art. You can get the old behavior back with --color-extractor average .


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK