HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
saitoha
libsixel
C2016–2025
saitoha / libsixel

libsixel

A SIXEL encoder/decoder implementation derived from kmiya's sixel (https://github.com/saitoha/sixel).

36Distinct people
45Mentions
0Explicit recommenders
2.9KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

A SIXEL encoder/decoder implementation derived from kmiya's sixel (https://github.com/saitoha/sixel).

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 1:49:46 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year45 dated mentions

Observed mentions: 2016-03-07 14:41:17 UTC to 2025-09-23 07:54:10 UTC.

02468102016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 3 mentions; 1 submissions, 2 comments20162017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 9 mentions; 1 submissions, 8 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 6 mentions; 0 submissions, 6 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 2 mentions; 1 submissions, 1 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 5 mentions; 2 submissions, 3 comments20202021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 4 mentions; 1 submissions, 3 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 5 mentions; 1 submissions, 4 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 8 mentions; 0 submissions, 8 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2025

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC312
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC918
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC606
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC211
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC523
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC413
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC514
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC808
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC000
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC303

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
libsixel What is this? This package provides encoder/decoder implementation for DEC SIXEL graphics, and some converter programs. (https://youtu.be/0SasrQ7pnbA) SIXEL is one of image formats for printer and terminal imaging introduced by Digital Equipment Corp. (DEC). Its data scheme is represented as a terminal-friendly escape sequence. So if you want to view a SIXEL image file, all you have to do is "cat" it to your terminal. On 80's real hardware terminals, it tooks unbearable long waiting times to display images. But nowdays, with high-speed CPU and broadband network, we got the chance to develop a new scope of SIXELs. SIXEL Animation img2sixel(1) can decode GIF animation. Related projects Video streaming Now Youtube video streaming is available over SIXEL protocol by FFmpeg-SIXEL project. Above demo only uses 16 color registers. SDL integration: Gaming, Virtualization, ...etc. SDL1.2-SIXEL project makes enable you to operate various GUI applications on the terminal. You can play "The Battle for Wesnoth" over SIXEL protocol. You can run QEMU on SIXEL terminals. SDL1.2-SIXEL can collaborate with XSDL-SIXEL. Furthermore some information of SIXEL-ready SDL applications are reported. NetSurf (screenshot) Green PDF Viewer (screenshot) DOOM (tweet) firesdl (movie) Langage Bindings libsixel-python converter.py example depends on it. mruby-sixel Used by mruby-webcam. libsixel-p6 A perl6 bindings for libsixel sixel-sys Rust FFI bindings for libsixel sixel-rs A safe Rust wrapper for libsixel id-sixel Total Idris 2 bindings for libsixel W3M integration img2sixel(1) can be integrated with Debian's w3m(maintained by Tatsuya Kinoshita) that includes patches for -sixel option derived from Arakiken's w3m fork(remoteimg branch). @uobikiemukot's sdump project selected another approach. He wrote a w3mimgdisplay compatible program yaimg-sixel. It also works with ranger. X11 on SIXEL terminals Xsixel is a kdrive server implementation for SIXEL terminals. GNU Screen integration Arakiken's GNU Screen fork(sixel branch) works with SIXEL-supported applications including above products. This project is now in progress. GUI flavored SIXEL applications will integrated with existing terminal applications on it. See also on youtube. Twitter client integration Some NetBSD/OpenBSD users are doing amazing challenges. arakiken's mikutterm(mikutterm-sixel) Now mikutter + mikutterm works with libsixel inline-image extension. SIXEL works with old powerless machines such as NetBSD/luna68k (here is OMRON LUNA-II): NetBSD/hp300 (here is HP9000/425e): arakiken's tw(tw-sixel) arakiken's tw(tw-sixel) works with libsixel inline-image extension. SIXEL works with old powerless machines such as OpenBSD/luna88k (here is OMRON LUNA-88K2 MC88100@33MHz): sayaka-chan sayaka-chan(PHP version) works with libsixel inline-image extension. SIXEL works with old powerless machines such as NetBSD/x68k (here is SHARP X68030 with 060turbo): SIXEL works even in-kernel console. @isaki68k wrote a patch for ite(4). Other sixelSPAD screenshot Includes 2 commands fricas2sixel and latex2sixel. Neofetch Now sixel backend is implemented. See https://github.com/dylanaraps/neofetch/wiki/Image-Backends#sixel termplay Depends on sixel-sys, --converter=sixel option is supported. sixelPreviewer Simple scripts and development environment for realtime edit-previewing for dot, svg, markdown, ...etc. sdump A sixel image dumper, provides pdf previewer. RetroArch SIXEL video driver is provided if you build it with --enable-sixel option. (screenshot) Highlighted features Improved compression Former sixel encoders(such as ppmtosixel) are mainly designed for dot-matrix printers. They minimize the amount of printer-head movement distance. But nowadays this method did not represent the best performance for displaying sixel data on terminal emulators. SIXEL data for terminals were found in 80's Usenet, but the technology of how to create them seems to be lost. kmiya's sixel introduces the encoding method which is re-designed for terminal emulators to optimize the overhead of transporting SIXEL with keeping compatibility with former SIXEL terminal. Now libsixel and ImageMagick's sixel coder follow it. @arakiken, known as the maintainer of mlterm, describes about the way to generate high quality SIXEL, which is adopted by libsixel (http://mlterm.sourceforge.net/libsixel.pdf, in Japanese). High quality quantization img2sixel(1) supports color image quantization. It works well even if few number of colors are allowed. Terminal requirements If you want to view a SIXEL image, you have to get a terminal which support sixel graphics. Now SIXEL feature is supported by the following terminals. DEC VT series, VT240/VT241/VT330/VT340/VT282/VT284/VT286/VT382 DECterm(dxterm) Kermit ZSTEM 340 WRQ Reflection RLogin (Japanese terminal emulator) http://nanno.dip.jp/softlib/man/rlogin/ mlterm http://mlterm.sourceforge.net/ Works on each of X, WIN32 GDI, framebuffer, Android, Cocoa version. XTerm (compiled with --enable-sixel-graphics option) http://invisible-island.net/xterm/ You should launch xterm with "-ti vt340" option. The SIXEL palette is limited to a maximum of 16 colors. To avoid this limitation, Try $ echo "XTerm*decTerminalID: vt340" >> $HOME/.Xresources $ echo "XTerm*numColorRegisters: 256" >> $HOME/.Xresources $ xrdb $HOME/.Xresources $ xterm or $ xterm -xrm "XTerm*decTerminalID: vt340" -xrm "XTerm*numColorRegisters: 256" yaft https://github.com/uobikiemukot/yaft recterm (ttyrec to GIF converter) https://github.com/uobikiemukot/recterm seq2gif (ttyrec to GIF converter) https://github.com/saitoha/seq2gif Mintty (>= 2.6.0) https://mintty.github.io/ cancer https://github.com/meh/cancer/ MacTerm https://github.com/kmgrant/macterm wezterm https://github.com/wez/wezterm aminal https://github.com/liamg/aminal iTerm2 (>= 3.0.0) https://gitlab.com/gnachman/iterm2 st-sixel https://github.com/galatolofederico/st-sixel
Read the full README on GitHub

What Hacker News says

45 sources
> I'm sure young me would have found a ton of use cases for this, but now I'm old. Invert the problem: get one and try to hack to do whatever. That may help you regain some teen spirit :) It may be better if you found some ideas naturally (chasing a rabbit down its rabbit hole is fun, but chasing your own rabbit is even funnier) However, if you want ideas, here are some simple ones: - listen to your bluetooth devices like toothbrushes, scales, thermometers: try to decode and display what they send. There are many free software projects doing just that for Xiaomi devices - connect a 4G module and try to send SMS. Most 4G modules can be driven with just AT commands so it shouldn't be too hard. The Quectel EC25 is extensively documented thanks to being present in the PinePhone: https://github.com/the-modem-distro/pinephone_modem_sdk/blob...
Read the rest
- then try to add a GPS antenna to make a field GPS: check https://wiki.pine64.org/wiki/PinePhone_Pro#GPS_/_GNSS - then try to have a LTE data connection, using w3m with its sixel mode to visit google news https://github.com/saitoha/libsixel#w3m-integration - try to integrate SMS, twitter etc within one client (twitter example: https://github.com/saitoha/libsixel#twitter-client-integrati... ) to post your GPS coordinates to your friends - one everything works, increase the difficulty: flash a free firmware on the Quectel, and try to improve it, or add functions that would help your other projects, for example A-GPS to get a faster lock: https://github.com/the-modem-distro/pinephone_modem_sdk/tree... Each one of this project should take at most one day, and may give you ideas to do more! If you need help, get in touch, my email is in my profile.
In Show HN: Beepberry – a portable e-paper computer for hackers
Sixels are pixels and enjoy a wide support due to how old this VT240 format is. The Kitty protocol starts with multiple formats: >> The terminal emulator must understand pixel data in three formats, 24-bit RGB, 32-bit RGBA and PNG. Different tools for different needs, but if you are going for a wide support you want something simple that doesn't also have 5 different types you have to separately implement and test: >> d: Direct (the data is transmitted within the escape code itself) >> f: A simple file (regular files only, not named pipes or similar) >> t: A temporary file, the terminal emulator will delete the file after reading the pixel data. For security reasons the terminal emulator should only delete the file if it is in a known temporary directory, such as /tmp, /dev/shm, TMPDIR env var if present and any platform specific temporar
Read the rest
y directories and the file has the string tty-graphics-protocol in its full file path. >> s: A shared memory object, which on POSIX systems is a POSIX shared memory object and on Windows is a Named shared memory object. The terminal emulator must read the data from the memory object and then unlink and close it on POSIX and just close it on Windows. > What nonsense, it takes literally 15 lines of code without using anything beyond the standard library to write a client Conveniently taking a preencoded PNG and assuming away the necessary queries of supported protocol: >> Since a client has no a-priori knowledge of whether it shares a filesystem/shared memory with the terminal emulator, it can send an id with the control data, using the i key (which can be an arbitrary positive integer up to 4294967295, it must not be zero). > I challenge you to match that for sixel Challenge accepted. There are many libraries for many languages. Let's look at this one in perl: https://github.com/saitoha/libsixel/tree/master/perl use Image::LibSIXEL; $encoder = Image::LibSIXEL::Encoder->new(); $encoder->setopt("w", 400); $encoder->setopt("p", 16); $encoder->encode("images/egret.jpg"); and some print($encoder) to print the output, and this works on all the terminals listed on https://www.arewesixelyet.com/ Compared to kitty: "As of April 2022, kitty and WezTerm are the only terminal emulators to support this graphics protocol completely, with Konsole and wayst having partial support" There are many nice things about the kitty protocol, but I think it's ultimately too complicated for the task. It's a Homer Mobile: https://www.wired.com/2014/07/homer-simpson-car/ If we want graphics in the terminal, first we need graphics in the terminal (using sixels is the simplest way, and you get access to many tools) then you can do more if you still want to - but you're likely to realize by then that all the extra things Kitty supports is YAGNI: https://en.wikipedia.org/wiki/You_aren%27t_gonna_need_it?use...
In Forking Chrome to render in a terminal
Seems like sixel would be an excellent solution, thanks very much for that pointer. However, I can always convert PDFs to images and go forward from there, I guess. It's not a bad workaround. The fbi image viewer is available for NetBSD's X Window system; not sure about the framebuffer port. https://www.kraxel.org/blog/linux/fbida/ EDIT: Apparently, NetBSD has lsix: https://ftp.netbsd.org/pub/pkgsrc/current/pkgsrc/graphics/ls... "Like ls, but for images. Shows thumbnails in terminal using sixel graphics. /.../ Because lsix uses ImageMagick pretty much any image format will be supported. However, some may be slow to render (like PDF), so lsix doesn't show them unless you ask specifically." On Linux, the green pdf reader for Linux apparently supports sixel: https://github.com/schandinat/green Screenshot of green+sixel on NixOS: https://tedd
Read the rest
it.net/r/commandline/comments/4oldf5/view_pdfs_i... Another Linux pdf reader with sixel: https://github.com/dsanson/termpdf All in all, woah, lots of fascinating reading and links here -- since I was not much aware of sixel before: https://github.com/saitoha/libsixel The sixel format itself seems to match really well with the NetBSD philosophy (among other things, keeping old hardware running via low-demanding, essentials-only software). Thanks again for that pointer.
In NetBSD 9.3

Showing the 15 most recent of 45 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.