Hacker News new | ask | show | jobs
by csdvrx 1714 days ago
First, stop accusing me of being emotional.

Second, tell me why 24 bits colors is insufficient for drawing into the terminals?

> starting with a baseline of a broken format that doesn't work

Look at that https://github.com/hackerb9/sixvid and that https://github.com/libsixel/libsixel and tell me precisely what doesn't work, in your own words.

If you can't...

> then we have nothing technical to discuss

... I think you may be right there!

1 comments

You're saying you're "reading between the lines", that reads to me like an emotional statement, not a technical one. Please let's focus on the technical issues at hand and what has actually been said, not on what we think someone might be saying.

>tell me precisely what doesn't work, in your own words.

I already explained it, I've used sixel in Xterm and Foot and I don't like it, the restriction to paletted images makes everything look bad. Also, changing the font size breaks the images. Also, the protocol is still terrible on bandwidth, if you use it to try to transmit 1080p video over ssh (as someone is bound to do) then you will encounter the same bandwidth issues. Again please read this issue if you want to know more about my stance, I agree with everything it's saying: https://gitlab.freedesktop.org/terminal-wg/specifications/-/...

So sixel-tmux is not going to help me, sorry. It may even make things worse for me if apps are trying to use it when I don't want it. If you want some more suggestions on what to do to help, I can give those. But you're also welcome to not listen to me if you disagree. Maybe you have to accept that I am just not in your target audience, but that's no reason to accuse other maintainers of trying to hold me hostage.

Edit: I said earlier that I think it would be a good goal to support the various image protocols, I would be happy to use this if eventually an image protocol was added there that wasn't seriously flawed. But the apps and terminal emulators will still have to be changed to support that, so supporting sixel doesn't really help towards that goal at all, and in some ways it impedes it because those projects might be expected to maintain that as a backwards compatibility option. That's what I meant earlier, I think you may be approaching this problem from the wrong angle.

> the restriction to paletted images makes everything look bad

Not with 16 million colors. That's what 24 bit color mean (2^16) also called "truecolor" mode

> Also, changing the font size breaks the images.

Not on mintty. I can change the font size up and down, it even resizes the sixels in proportion so the images remain aligned to the text in a pixel-perfect way.

It's a terminal problem. You are using bad terminals. I grant you that xterm is the least worst option on linux, but do yourself a favor and try mintty on Windows.

> Also, the protocol is still terrible on bandwidth

Are you using telnet on remote hosts? Unless you do that, with ssh, compression means I can stream video (!!!) just like on local hosts (where bandwith is not an issue)

> It may even make things worse for me if apps are trying to use it when I don't want it.

In the future, sixel-tmux will intercept sixels live and rewrite them into other format, like iTerm or kitty.

How is that making things harder for you?

If you really don't want sixel even if your terminal supports them, use the appropriate terminfo and you will see nothing.

> seriously flawed

You have yet to tell me the flaws in your own words, flaws that are not due to a given terminal.

Try to use sixel to play videos in mintty, with 24 bit support so palettes aren't a problem. Then try tweaking the font size (why not!), notice how it remains a perfect user experience, then we'll talk again.

For now, all I see is FUD.

>Not with 16 million colors. That's what 24 bit color mean (2^16) also called "truecolor" mode

>Try to use sixel to play videos in mintty, with 24 bit support so palettes aren't a problem.

You are confusing sixel with the iTerm image protocol which is different. Sixel is a really old and outdated, inefficient protocol that only supports uncompressed 6-bit paletted images. It would be best if we could just stop talking about sixel altogether, because this is not even what you're referring to anymore. I'm actually concerned that you're conflating these two, it would also best if you could be clear about this in terms of your project so it's not confusing as to what your project supports. Maybe the name should change from sixel-tmux at some point?

SSH compression is not going to be better than the image's native compression, you really don't want to rely on that to compress your images when we already have dozens of other better ways to transmit video.

>Not on mintty. I can change the font size up and down, it even resizes the sixels in proportion so the images remain aligned to the text in a pixel-perfect way.

I'd love to look into how that's accomplished but I can't use mintty because I use a Mac, sorry. I'm also not really interested in trying to mess with mingw just to get this set up.

This isn't FUD either, you're saying the terminals are bad, well, there is no terminal I can use that works correctly, I suggested to help out fixing the terminals if you know how and you basically said no. So what am I supposed to do? Part of making a good protocol is making one that is easy for the apps and terminal emulators to implement correctly, if that doesn't exist, then like I said you have to go back to square one. Adding this support to tmux is useful in some cases, but it still isn't going to help with getting the terminals to implement this right.

>In the future, sixel-tmux will intercept sixels live and rewrite them into other format, like iTerm or kitty.

This is a good idea, please do this instead of trying to get other terminals to adopt Sixel when they are just going to have to replace it down the line anyway.

> You are confusing sixel with the iTerm image protocol which is different.

No I'm not.

> Sixel is a really old and outdated protocol that only supports 6-bit paletted images.

No it doesn't.

sixels can be 16 million colors, that's precisely what the snake.six outputs tests: if you can't see the precise degradation of the snake skin greens and yellows, your terminal is broken.

With so many bad terminals, it's no wonder that a lot of people have such a bad opinion about sixels!

> It would be best if we could just stop talking about sixel altogether, because this is not even what you're referring to anymore. I'm actually concerned that you're conflating these two

Actually, with what you said, I think you're the confused one here. When you could not express in your own words which practical limitations were imposed by sixels, I was 99% sure.

Now I'm 100% sure you have no idea of what you are talking about. Sorry if it's blunt, but take the time to run the tests I've suggested to correct your misconceptions about sixels.

Maybe you'll end up loving the format once you see what it's really capable of?

> I'd love to look into how that's accomplished but I can't use mintty because I use a Mac, sorry. I'm also not really interested in trying to mess with mingw just to get this set up.

Intel macs can run Windows natively. You've also got your pick of emulators, from parallels to vmware, if you roll that way.

So install Windows one way or another, go to msys2.org, download the latest release, click on install. No messing required, mintty is here by default.

You can then use pacman if you want more, which BTW is far better than most of the package managers available on Mac: simply follow the pacman update steps clearly explained with many screenshots on the first page.

Then you'll have an up-to-date msys2 install, with most of the linux tools you want running natively (no WSL involved) or just a `pacman -S` away.

>> In the future, sixel-tmux will intercept sixels live and rewrite them into other format, like iTerm or kitty.

> This is a good idea, please do this instead of trying to get other terminals to adopt Sixel when they are just going to have to replace it down the line anyway.

What you've written makes about as much sense as saying a drawing program should stop trying to support BMP format since it will have to be replaced down the line by JPG or PNG.

gimp, paint and others support many formats. Nobody is complaining. People just click on open. They don't care about the underlying formats.

https://vt100.net/docs/vt3xx-gp/chapter14.html#T14-1

Am I reading this incorrectly? It seems I was wrong, it supports 8-bit color, not 6-bit color. But that's still terrible, and every Sixel implementation I've ever used has spit out dithered images. The only terminal that is able to display full color images for me is iTerm, using the iTerm escape sequences, which are different escape sequences from sixel. So again, please help out with fixing this for me if you know how. Because so far you have not adequately explained what is going on here, or corrected any misconceptions, or helped to fix anything that is wrong with these terminals. And even the various libsixel examples seems to show dithering: https://github.com/saitoha/libsixel

If I'm confused then you could be in a great position to help me out, so please explain what apparently myself and the libsixel authors are both doing wrong. Then maybe at some point in the future I could help you out and return the favor.

And there are also other problems with the iterm escape sequences that I suspect will prevent you from correctly implementing them in tmux (see here: https://gitlab.com/gnachman/iterm2/-/issues/3898). So all paths point towards needing to make some new protocol for this. You may be in the best position to do that too.

>Intel macs can run Windows natively. You've also got your pick of emulators, from parallels to vmware, if you roll that way.

I'm not going to dual boot Windows or use a VM just to use a terminal emulator for a couple minutes, sorry. If you could just explain what that terminal does that's special so that it could be implemented in other terminals, or show a video, that would help.

>What you've written makes about as much sense as saying a drawing program should stop trying to support BMP format since it will have to be replaced down the line by JPG or PNG. gimp, paint and others support many formats. Nobody is complaining. People just click on open. They don't care about the underlying formats.

If GIMP was attempting to pressure other projects to output BMP files then yes, that would be a problem. I suspect other projects wouldn't go for that just because they asked.

https://saitoha.github.io/libsixel/

Looks to me like the limited pallete is mostly as XTerm limitation, but a limitation of the protocol.

> Am I reading this incorrectly?

Yes

> It seems I was wrong, it supports 8-bit color, not 6-bit color.

Good.

A positive first step is knowing when to admit error.

> But that's still terrible, and every Sixel implementation I've ever used has spit out dithered images

OMG, I spoke too fast, there you go again!

I've given you a step-by-step guide to try the best terminal there is.

> So again, please help out with fixing this for me if you know how.

I HAVE TOLD YOU AT LEAST 4 TIMES: YOU NEED TO USE A STATE OF THE ART TERMINAL TO FIRST CORRECT YOUR MISCONCEPTIONS.

Then if you are speaking in good faith, we will talk again.

> Because so far you have not adequately explained what is going on here, or corrected any misconceptions, or helped to fix anything

I'm at a loss. I can't hold your hand while you install msys2 so you realize yourself you were wrong, just like you did with the 24 bit colors which you wrongly assumed to not be supported by sixels.

Let's try a Bayesian approach: considering you have been proved wrong, you should update your priors and consider the likelihood of being wrong again is greater than me being wrong, since I have 1) quite an experience with sixels 2) so far I've been proven right.

> I suspect will prevent you from correctly implementing them in tmux (see here: https://gitlab.com/gnachman/iterm2/-/issues/3898)

You are pointing me to a 6 years old bug report about tmux eating sequences important to display sixels, which funny enough is the original concept behind sixel-tmux: click on my profile and you will notice "Show HN: Sixel-tmux, display graphics because it does not eat escape sequences" by csdvrx on Nov 27, 2019

I agree it was a serious issue, enough to motivate me. I didn't know it was also affecting iterm. At least I learned something too from this exchange, thanks a lot!

> So all paths point towards needing to make some new protocol for this. You may be in the best position to do that too.

All path point toward you mixing up terminal issues and sixel issues, not using the right tool, refusing to even try to use the right tool.

But yes, a few of us are in a position to push for better standards. I think @christianparpar and @hpa have the deepest understanding of the alternative standards. Eventually a few standard may emerge... or not. It doesn't matter. BMP, GIF, PNG and JPG can all coexist, each have their pros and cons. There's no need to make a choice when all apps support loading and saving in the user favorites formats.

> I'm not going to dual boot Windows or use a VM just to use a terminal emulator for a couple minutes, sorry.

Then I'm not going to try to explain you what you are understanding in a wrong way, as only seeing how mintty handle sixels WITH YOUR OWN EYES may correct your misconceptions at this point.

> If you could just explain what that terminal does that's special so that it could be implemented in other terminals, or show a video, that would help.

Click on the url and you'll see a few demos, including the snake.six displayed in a wonderful example of 24 bit "truecolor" support.

Your request to add a video showing how mintty handle font changes seems resonable. It will make a nice addition to sixel-testsuite.

> If GIMP was attempting to pressure other projects to output BMP files then yes, that would be a problem

If other projects did not even support BMP, but only knew about drawing ASCII art with a 8 colors palette, yes, refusing to implement BMP in 24 bit mode as a first step, while spending 6 years debating the best way to achieve the perfect format that will have absolutely no drawback (chasing a wild goose) would indeed be a problem...