- I learned about Chafa when I found a video editor that runs in the command line with keyboard control - vic - it just lets you insert split markers and when you exit the video is sliced up into the portions. I really like the low-fi nature of scrobbling through the video, it has low brain overhead.
- Wow. Thanks for this recommendation! I have multiple times half-baked something like this using ffmpeg to dump out thumbnails and make cuts.
- I use chafa extensively, and it really is the best tool for terminal graphics in my opinion.
I use it as a fallback option for terminals without proper terminal graphics support in my TUI Jupyter client, euporie.
There are Python bindings available: https://github.com/GuardKenzie/chafa.py
- And JS bindings: https://github.com/hectorm/chafa-wasm
And I'm half-working on Rust bindings...
- Author of the JS bindings here. I also have a browser demo: https://ansi-o-matic.molinero.dev
- Have you tried Charmbracelet's bubble tea - https://github.com/charmbracelet/bubbletea
- BubbleTea is great, but it doesn't have support for Kitty Graphics. https://github.com/charmbracelet/bubbletea/issues/163
- > and it really is the best tool for terminal graphics in my opinion
Not sixel or kitty graphics?
- What interests me about it is the unicode mosaic output format that looks higher quality than the usual upper half block or braille character approaches without needing to support a special protocol.
- Setting aside the usual compatibility issues with those things.. neither are available from your buildbot. Also while Jupyter does supports images other notebooking ecosystems may not, and anyway you need a file whereas chafa can work with streams.
- i'm curious do you work entirely with a terminal and no desktop?
Chafa looks cool, i'd feel cool using it when i use a terminal but if really wanted to see an image id just open it in a image viewer.
- Why can't we have proper graphics on terminal? years ago I remember being able to use graphics.h to draw on MS-DOS terminal and print letters on it (text mode).
- Most popular terminals now have support for `kitty` graphics protocol which can smoothly and efficiently render raster images. So chafa is a way to get some backwards compatibility for some types of applications that want to show images but may not support that.
- Did you try notcurses ? [0]
- notcurses is probably the best option for getting the best you can out of a random terminal (see https://github.com/dankamongmen/notcurses/blob/master/TERMIN... which details the status of most terminals people use), but the main thing is to choose a decent terminal that meets your needs. I personally use xterm (after using various other terminals, both "modern" and VTE-based), as I'm on Linux, and I need to connect to various devices (e.g. networking gear) where I need a reliable terminal that handles whatever those devices throw at it. The graphical mechanisms that work for me therefore are sixel and tektronic.
- Running the included notcurses-demo on any half-modern terminal is really impressive:
- There are multiple graphics mechanisms on terminals (both real, and the virtual ones that have replaced them), the issue is which ones your terminal supports (probably none, given most terminal/libraries are bad at supporting features that have been around since the 80s), and which libraries you are using to draw them.
- I'm currently using this for a teams/zoom/meet replacement for people who work in the terminal. Might even make it to a Show HN some day.
- This sounds amazing. I hope it does!
- I use chafa in term.everything[0], and I have nothing but good things to say about it! hpjansson is a great maintainer too, if anything even seems like it's wrong with chafa he will chime in with a fix or a suggestion[1] (I'm not the only one he does this with too [2][3]). I would definitely recommend this lib for anyone doing terminal graphics.
[0]https://github.com/mmulet/term.everything
[1]https://github.com/mmulet/term.everything/issues/5
[2]https://lobste.rs/s/qh6lil/chafa_terminal_graphics_for_21st_...
[3]https://github.com/wong-justin/vic/issues/1#issue-2586904982
- Discovered this recently when I wanted to set my perfect retro feeling company logo onto the MOTD of some hardware so we'd have it on the serial port.
- I've been trying for like three hours to get this to show in-line images with w3m. Anyone got a config with that working?
- w3m doesn't support chafa for inline image display.
(You can set a custom w3mimgdisplay command, but it has to speak the same protocol as w3mimgdisplay. If you're feeling adventurous, you can try modifying https://github.com/uobikiemukot/sdump/tree/master/yaimg-sixe....)
- Previously in 2022 (97 points, 31 comments) https://news.ycombinator.com/item?id=32797681
- If you want some hilarious insanity: t try explaining ascii/terminal rendering to a text llm and see how it struggles
- I threw together a utility for this with just the half character in 2018, I don't even remember why.
https://rubygems.org/gems/barf
The name does imply the image quality, fyi.
My solution is also multithreaded, in Ruby. :D