HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
csdvrx
sixel-tmux
C2019–2024
csdvrx / sixel-tmux

sixel-tmux

sixel-tmux is a fork of tmux, with just one goal: having the most reliable support of graphics

8Distinct people
29Mentions
1Explicit recommenders
514GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

sixel-tmux is a fork of tmux, with just one goal: having the most reliable support of graphics

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

> The thing about sixel is it's only supported on old DEC glass terminals, xterm with a non-default configuration, mintty, and several emulators that are fairly unlikely to be…

csdvrx used a recommendation phrase. 2 indexed comments match. This is a phrase match, not a verdict.

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, 3:56:07 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 year29 dated mentions

Observed mentions: 2019-11-27 01:33:17 UTC to 2024-08-30 07:20:41 UTC.

02468102019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 3 mentions; 1 submissions, 2 comments20192020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 8 mentions; 1 submissions, 7 comments20212022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 5 mentions; 0 submissions, 5 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 9 mentions; 1 submissions, 8 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 4 mentions; 1 submissions, 3 comments2024

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
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC312
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC000
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC817
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC505
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC918
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC413

What Hacker News says

29 sources
After having spent too much time trying to get the simple https://github.com/csdvrx/sixel-tmux/ features into mainline tmux (last November https://github.com/tmux/tmux/issues/3753), maybe it'd be easier to jump ship as use zellij? Could anyone offer recommendations on "riced" zellij configuations, or just a demo where it shows doing with (say charts of disk usage per folder), watching a movie with mpv + keeping a vim to type on?
In Zellij: A terminal workspace with batteries included
Agreed - COLORTERM has its own problem. I prefer your approach, it looks very sound! A fork of terminfo may be needed if the description of modern terminal capabilities can't be added -- or if old and deprecated attributes repurposed for that job (like in your padding example): if you're automating the correction/creation of terminfos in ~/, IMHO, it may be better to piggyback on tic as much as possible. Anyway, to backport modern terminal descriptions to legacy programs, creating correct binary terminfos in ~/.terminfo seems the best practice. You can also invent new TERM. When I wanted to have italics etc about everywhere, personally that's just what I did for sixel-tmux: https://github.com/csdvrx/sixel-tmux/?tab=readme-ov-file#ste... : just declare a new $TERM you know to be right, and use that in the apps that let you use a little lo
Read the rest
gic in their configuration file I do that in my .vimrc: " If Vim doesn't know the escape codes to switch to italic let &t_ZH="\e[3m" let &t_ZR="\e[23m" " Italics pseudo-auto toggle: force italics if we recognize it's supported from TERM if match($TERM, "xterm-256color-italic")==0 highlight Comment cterm=italic endif BTW you should package your emacs config file with the emacs APE from https://cosmo.zip/pub/cosmos/bin/emacs to do a cuteemacs, to carry your config files and everything in a portable binary: https://github.com/csdvrx/CuteVim Another idea: have you considered that the "program that would be run by .bashrc" to generate the "unambiguous 24-bit color capabilities" could set environment variables to communicate them? Like, if you can't stuff them in terminfo, stuff them in environment variables! Env var work well on Windows, and the configuration files of terminal programs could just use these when available to override. It's be like adding friends to your proposed TERMVERSION: TERMSETF24 etc where you've have a finer control than COLORTERM
In I just wanted Emacs to look nice – Using 24-bit color in terminals
> why you have stuck with Vim over NeoVim? Wow that's a very personal question! I'll try to answer the best I can! I like retrocomputing and hacking, especially for Christmas: I want to write things I can share, that'll mix old stuff and new stuff, and that will make people smile - call it the spirit of Christmas or whatever. My 2022 Christmas project was to write a web server in perl, exposing the whole C:\ drive, just for fun. perl, vim, bash (etc) are old, so they are stable and available everywhere: other things equal, I think doing the same with neovim might have had less impact. Also I think it's better and more satisfying to make existing tools work the way you want (ex: I want images in my terminal without moving to another terminal!), instead of moving to other tools when your existing tools can't do something you want. I believe
Read the rest
it's the true spirit of hacking. > i have done the same. I made a couple of attempts to switch to nvim the last of which was abandon just over a month ago. TBH I never really tried neovim, maybe because I like the start screen of vim? The idea of doing something for orphans may be cheezy, but I really like the message! Also why did you attempt to switch to neovim? I don't feel any limitation in vim. I'd be curious to know why you tried. I felt them in tmux (lack of sixel support) or bash (incomplete history file), but instead of doing the sensible thing such as using zsh within kitty like everyone else, I spent some time to have tmux intercept and transcode sixel sequences into "ascii art" (https://github.com/csdvrx/sixel-tmux/) have bash save commands start and stop time in a sqlite database (https://github.com/csdvrx/bash-timestamping-sqlite) > I have a very hard time articulating what I like more about Vim other than simply it just suits me better (which isn't an interesting answer). I see what you mean. I didn't like zsh when I tried it last time I tried to move to Linux on the desktop. I liked hyprland - it sealed the whole linux-on-the-desktop deal. It "suits me better", but it's new so I think (or I hope?) it's not just by weird interest in retrocomputing that makes me prefer bash+vim to zsh+neovim :)
In Show HN: CuteVim – Portable Vim with a cute vimrc
You can have that functionality integrated within tmux with https://github.com/csdvrx/sixel-tmux/ : if you terminal doesn't support sixels, you'll at least see something close to the picture they represent. Then of course it's not pixel-perfect unless you make your terminal very large (like 800x240 instead of 80x24) but something being better than nothing, I'd argue it's for the better if all you can do is 80x24 with no pictures otherwise.
In Terminal graphics protocol
> What's wrong with extending ReGIS, Sixel, or Tektronix (just kidding on that one) protocols? Or, maybe, PostScript/Display PostScript? Nothing is wrong with them: Sixels for example work perfectly for all the tasks I throw at them in my terminals, from showing pixel perfect images to playing videos with mpv. > Can't we define what behavior should a modern terminal have with these already existing tools instead of inventing a brand new wheel? Actually, something is wrong with these already existing tool: they are preexisting, and therefore someone else idea. If you don't invent a new wheel (on which you can take credit for), you have to recognize that 40 year old technology is now perfectly adequate. I think it wasn't ideal in the 1980s due to the bandwith requirements, but in 2023, if I can play videos with mpv, I think that's enough f
Read the rest
or most use. I think the tech has been adequate for some time (at least about 15 years), and I can freely recognize that both because I have no horse in the game, and I care more about actual use than having/creating a shiny new tech. Inventing a better wheel is the perfect way to avoid confronting such issues: you can argue your new wheel is better, and technically it will be true, even if in practice it's no different that the old wheel, in the sense it allows your vehicle to go forward for all the practical measures you care about. There may also be a loss-aversion effect: if what you invented that was great is no longer needed, it may be painful to recognize it. You may not want to go for what's technologically not as nice as your invention, but that can now do the job just as well as your invention did, thanks to Moore's law. Some people also just want to see their favored pet idea to win - unfortunately, they pet idea is only theoretical, or if it exists, it has a very small install base: since sixel is "adequate" or "sufficient", blocking/sabotaging sixel support is the logical action to prevent it from becoming established through network effects. Put all these people together, add a little handwaving about how old formats can't work, and you get the current situation. BTW here's a project I'll try to resurect: rending X applications ... in sixels: https://github.com/csdvrx/xorg-sixel So you could have graphical applications in your terminal! I've just up. I've only uploaded the picture as I'm still fighting with the code but what you see is Xeyes show inside wezterm thanks to the sixel output of Xorg. For terminals that don't support sixels (yet), sixel-tmux will convert them "in flight" into derasterized graphics: see https://github.com/csdvrx/sixel-tmux/ I'm sure this tech stack (X apps -> Xsixel -> sixel-tmux -> text) will make many people cringe, but in terms of functionality, it works (latency, bandwidth etc are sufficient for my uses) and if you have sixel support in your terminal, you get pixel perfect results. FWIW I use and love Hyprland, but I want to use portable graphics apps more than I care about the underlying tech being better.
In Terminal graphics protocol
See also rant[1] of sixel-tmux author. > It's 2021, and we should be able to do litterate programming in the console, with full graphical support. Yeah. We are stuck cosplaying computers from the sixties. What's even funnier, even if you find a modern terminal emulator that supports features like ligatures, graphics, emoji etc. you still will be blocked by tmux. Sure - not everyone needs tmux. If you never work on remote machines, you can live without it. But I work on remote machines all the time. I also use Kakoune text editor that defers window management to external tools (WM or tmux, but to be honest, tmux is much better). Zellij is more of r/unixporn bait than usable tool for now. So I'm stuck with text only interface. [1]: https://github.com/csdvrx/sixel-tmux/blob/main/RANTS.md
In Are We Sixel Yet
csdvrx·Sep 13, 2022Recommendation phrase
> The thing about sixel is it's only supported on old DEC glass terminals, xterm with a non-default configuration, mintty, and several emulators that are fairly unlikely to be preinstalled anywhere Uh, no? Just start xterm (say from another xterm) with the correct flag. Sixels are also supported on the BSD console. The lack of support in the likes of gnome-terminal is a willful and ugly political decision that I've already documented. > Images are a different matter, where the compromise makes more sense. Indeed, I love to do remote gnuplots > I can write a script that vomits a jpeg to some vague common denominator standard and it'll probably work for all my coworkers using a smorgasbord of emulators. This is the idea of tmux-sixel https://github.com/csdvrx/sixel-tmux : intercept sixels sequences and, if your terminal doesn't support it
Read the rest
(or if you use the scrollback buffer, to save or RAM), render a unicode representation instead (like Chafa), but if it does, pass through the original sixel sequence.
In Chafa: Terminal Graphics for the 21st Century

Showing the 15 most recent of 29 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.