AnonymouX47/term-image

Support for terminal graphics protocols

AnonymouX47 opened this issue · 5 comments

I will be implementing support for popular terminal graphics protocols, first in the library and then integrate them into the Image viewer as initially requested by users @paw-lu and @leo-arch.

I will try to make the interfaces common throughout as much as possible.

Progress:

Protocol Library CLI TUI
kitty ✔️ ✔️ ✔️
iterm2 ✔️ ✔️ ✔️
sixel
terminology

This currently waiting on #16

#16 has been merged and the changes released in version 0.3.0.
Now waiting on #30.

Waiting for it!

Hi! Just noticed this project posted to Reddit, looks nice! A couple things for you:

  • Recent state of terminal bitmap graphics support, in case you wish to test on even more terminals: https://www.reddit.com/r/linux/comments/t3m7zm/quick_roundup_of_bitmap_graphics_availability_in/ . The part at the end could be useful too, for determining the number of colors, text cell pixel size, and blending better with ANSI colors.

  • For sixel encoding, depending on your goals you might consider either linking to an existing encoder or writing your own. libsixel is good and well supported, though my understanding is some of the API might not be perfect. If you want to write your own, you might look at chafa and notcurses: both have really nice fast sixel encoders, easily fast enough to support animation at 100+ FPS. If you choose to break up sixel images into smaller pieces, you could get much higher apparent bit depth, for example.

Anyway, always happy to see more in this space. Have fun!

💗

Thanks. I really appreciate your interest and you reaching out.

I've gone through the Reddit post, the info will be definitely be really useful, including some links within the post also... most especially for sixel (which I'll be adding support for soon).

Also, thanks for the info on sixel, I'll look more into the encoder options soon.
I might end up implementing an encoder cos I've read reports about libsixel being substantially slower than notcurses (maybe not the current status though) but for a start, I'll use libsixel and see how it goes.

Once again, thanks so much. 😃