Terminal: Sixel graphics should be ignored unless supported

Created on 22 Feb 2018  路  10Comments  路  Source: microsoft/terminal

  • Your Windows build number: (Type ver at a Windows Command Prompt)
    Microsoft Windows [Version 10.0.17101.1000]

  • What you're doing and what's happening: (Copy & paste specific commands and their output, or include screen shots)
    I run a file containing this (you could also just paste the three lines starting with printf):

#!/bin/bash
printf '\ePq#1NNNN#2NNNN#3NNNN$oooo'\
'#1oooo#2oooo-#3BBBB#1BBBB#2BBBB${{{{'\
'#3{{{{#1{{{{????\e\\'

The result is that it prints:
q#1NNNN#2NNNN#3NNNN$oooo#1oooo#2oooo-#3BBBB#1BBBB#2BBBB${{{{#3{{{{#1{{{{????

  • What's wrong / what should be happening instead:
    Since ConHost doesn't support sixel graphics (at this time) it should be ignored and nothing should be printed. It should be as if the entire output of the program was sent to /dev/null.

"Non-graphics terminals generally silently ignore sixel escape sequences." -- https://en.wikipedia.org/wiki/Sixel

In WSLTTY (that supports sixel graphics) the program prints a 3x3 red, green and blue colored square:
brg
gbr
rgb

xterm in WSL Ubuntu with VcXsrv ignores sixel graphics unless started as a VT340 terminal: xterm -ti vt340, then it prints the colored square.

Area-VT Issue-Bug Needs-Tag-Fix Product-Conhost Resolution-Fix-Committed

Most helpful comment

I guess I didn't directly respond about sixels in Microsoft/WSL#1099 - It'd be cool, it's on the backlog.

All 10 comments

Since we're mentioning Sixel here, there's a UserVoice to get Sixel graphics support for ConHost here Recommend upvoting it to gain priority.

I guess I didn't directly respond about sixels in Microsoft/WSL#1099 - It'd be cool, it's on the backlog.

I should leave this here for stopgap graphical fun, although the performance of conhost makes it very painful: https://hpjansson.org/chafa/

Whoa whoa whoa. You can't just rag on conhost's performance without giving me a repro @oising. :P I work pretty dang hard to optimize things when I have a concrete hot path to work on.

@miniksa -- you're right, I'm sorry. I'm on your side, but I was definitely way too terse here. That links to a super fun tool for emitting VT for animating gifs/pngs/mp4s etc to a terminal. I think you're doing an outstanding job of adding value without making conhost _worse_, but until the old GDI+ crud is ripped out, it'll never compete with xterm/alacritty/sakura/(insert GL/SDL powered terminal here.)

That said, here's your repro (WSL):

1) sudo apt install chafa
2) curl https://media.giphy.com/media/12UwsVgQCYL3H2/giphy.gif --output winanim.gif
3) chafa winanim.gif --font-ratio 1/3

Now fire up X410, VcVxsrv, etc, spawn an xterm or a fancy accelerated shell like sakura and try again.

I've attached two short vids (one sakura over x410), the other wsl on conhost (18362.53).

sakura 2019-04-10 14-31-22.zip
Ubuntu 18.04 2019-04-10 14-33-05.mp4.zip
xterm 2019-04-10 14-38-29.zip

Vids recorded with window 10 game bar (win+g).

edit: added plain old xterm. I'm on a suface book i7 btw. Even xterm smokes conhost.

I'd be curious to know how much of this difference is down to WSL's known problems with I/O, though I assumed that was mainly disk writes - but with the architecture of linux being all files and sockets, perhaps it's part of the problem. There's no win32 native version of Chafa, at least nothing comparable that I know of. I can't imagine it being much of a blocker though - what's the throughput here for animating with text? It's gotta be absolutely pitiful compared to running npm install ;)

OK. I did a WPR trace of what's going on with chafa and we should make a new issue. Going to do that and come back and link it here.

See #410

:tada:This issue was addressed in #6328, which has now been successfully released as Windows Terminal Preview v1.3.2382.0.:tada:

Handy links:

Is there an issue for tracking sixel support?

Yep, #448

Was this page helpful?
0 / 5 - 0 ratings