Closed migueldeicaza closed 1 month ago
sixel support is rapidly becoming as mandatory as ANSI escape sequence support. Please do not allow Terminal to become as obsolete as the old Windows console host by not implementing sixel.
As far as I know, terminal emulators are the only platform capable of running cross platform, statically linked, mouse driven apps that can even be run remotely over ssh.
The main feature missing from this platform is a universally implemented graphics API. I've spent a bit of time researching this, and I believe implementing at least one of sixel, kitty, or iTerm2 would be well worth the effort.
IS there something similar to sixel, but for audio? I think it would makes sense over SSH connections...
IS there something similar to sixel, but for audio? I think it would makes sense over SSH connections...
Similar, insofar as that representing anything even moderately complex will require extreme downsampling? Absolutely there is: DECPS.
@piranna : Off-topic here, but apart from what @DHowett mentioned, you probably have more success to stream audio via a pulseaudio TCP connection which you can tunnel via SSH. :bulb:
@rgpublic I know it's offtopic, sorry for that, but hoped you could guide me. Good to know something exists, thank you to both of you :-)
I hope this i the central issue for image display, so I am following this. Unfortunately there seem to be many other issues which essentially request the same feature, so that its relevance might be underestimated ...
@j4james How stale is this: https://github.com/microsoft/terminal/issues/448#issuecomment-937751369 branch? With eyes on #1173 in the immediate term, I wanna see just how far away that would be from merging in a full passthrough world
@zadjii-msft I actually just got my sixel branch merged with main in the past week or so. And with the latest progress on #1173 I was going to ask whether it might be a good time to create a PR for it. Worst case I thought we could put it behind a feature flag until the Windows Terminal side is ready.
That said, I've still got a lot of cleaning up to do before the code is presentable, so it may be a while before I can create a PR. Also, I should note that it only has a GDI renderer - I was hoping somebody else would handle the Atlas implementation, because I know very little about how that works.
NOW IS THE TIME
Sorry I got a little excited but yes - I think this would be the perfect time to start merging that in. We can absolutely merge this all piece by piece. We can work on merging the conhost sixel implementation while passthrough is getting ready. Then we can get the Atlas sixel implementation in in post.
I was hoping somebody else would handle the Atlas implementation, because I know very little about how that works.
Once I have an idea of what you need, I'll give you an implementation the same day. :) FYI ideally, I need a per-sixel-texture ID so that I can cache the CPU-side texture as a GPU-side one between frames. But it will also work sufficiently well without that, at least in the beginning.
This is my favorite GitHub notification in today's catch-up. So excited to see this make it in 😁
And this FFmpeg-SIXEL is crazy cool. IDK why I am so excited for running videos in the terminal... or maybe because then we can get graphics output directly from python scripts in both REPL and from posh CLI.
What's the ETA for this?
I would rather recommend mpv. And you can already play movies in the terminal with mpv --vo=tct --really-quiet <file>
, obviously this is not what can be achieved with --vo=sixel
or --vo=kitty
, they are both supported in mpv and will just work ones they hit Terminal.
since #17510 is merged, maybe close this issue?
Would like to see Sixel support in the Terminal, this is the standard used to show graphics in the console.
Sixel is part of the original DEC specification for doing graphics in terminals and has been re-popularized in recent years for doing graphics on the command line, in particular by Pythonistas doing data science.
The libsixel library provides an encoder but is also a great introduction to the subject (better than the Wikipedia page):
https://github.com/saitoha/libsixel