1. 31
    1. 9

      XTerm also supports real graphics as well, thanks to the VT430’s sixel mode. This page has some nifty demos.

      I wish this feature was better known/more used. Because few programs take advantage of this capability, many terminal emulators haven’t implemented sixel support.

      Personally, I have found this feature useful for listing directories of images with lsix, and also for displaying output from GNUPlot.

      1. 5

        This is some amazing singing pig stuff.

        1. 3

          Singing pig?

          1. 6

            Like, the quality of the output isn’t nearly as impressive as the fact that it works at all!

            1. 4

              Ahh I see. Not an expression I had heard before.

              I do agree, the output quality does leave a bit to be desired, but considering this is 30 year old technology, I give it somewhat of a pass.

              I do wish that there was a higher-quality more modern alternative. I know iTerm2 has an image drawing protocol, but no other terminal emulators have adopted it as far as I know.

              1. 5

                Kitty supports a graphics protocol too. I plan to one day port this to alacritty.

              2. 4

                The term that I’ve seen is dancing bear (commonly attributed as a Russian proverb): “The marvel is not that the bear dances well, but that the bear dances at all.”

              3. 2

                I would love for something more like Mathematica (as you note in a peer comment) that was open and widely adopted for interactive computing.

                1. 1

                  How about Jupyter Console?

      2. 3

        I think the real tragedy is shoving this into a glorified vt100, instead of realizing there are better tools for this…

        1. 6

          If you want an interactive CLI type interface that can also embed images, what other tool is there available for this today? I guess Mathematica kind of has this, but it’s proprietary, and cannot be used as a general-purpose UI for other programs to target.

          1. 6


          2. 3

            I’d add to that: works over SSH or some equivalent.

            I have a proof-of-concept implementation that adds two features to FreeBSD:

            • A content negotiation protocol over pipes, so the sender advertises the set of things it can produce and the receiver picks the one that it wants, gracefully falling back to unknown if one end doesn’t support the protocol.
            • A ‘pipe pealing’ mechanism in the TTY layer, so that you can establish independent pipes to the terminal emulator, for different types of data.

            Both of these could be cleanly encapsulated in the SSH protocol, but I haven’t actually done the work (yet).

            I’d love to see something like this standardised. I modified libxo in the base system to support this protocol, so you can pipe any libxo-enabled utility to something that wants JSON or HTML and have it work without the user having to pass any libxo flags to the first thing in the pipeline. Oh, and a proof-of-concept using the PTY interfaces so that the terminal could request an HTML version of what was being displayed and open that in a web browser. I’d love to have a terminal incorporate something like that properly so that, for example, ls gave me a table view that I could sort and filter.

          3. 2

            Jupyter console and, slightly more distantly, interactive notebooks both fit, imo.

        2. 2

          I think the real tragedy is that we are rio(1) (well, a descendant of it, anyway), in which this sort of thing — like a lot of things in Plan 9 — was so easy that it didn’t even seem noteworthy.