Pages

Tuesday, August 11, 2020

Gnome-terminal with sixel support

I like terminal applications - usually TUI applications are fast and clean, and well readable.  This interface is too simply, and then developers has to much more think about UI, and has not too much possibilities. On second hand sometimes the output of terminal applications are too limited. We run our terminal from GUI (usually), and then some graphic possibilities can be practical - graphs are better in pixel graphics than ascii art.

There is solution - from terminal's dark age there is a SIXEL protocol. Unfortunately only few terminals supports this protocol. But there is great hope - Gnome terminal in develop version supports this protocol now. I can call gnuplot from psql and I can have well looked graphs in psql too.

For more comfort work I define a psql macro (variable):

\set gnuplot '\\g (format=csv) |gnuplot -p -e "set datafile separator \',\'; set key autotitle columnhead; set terminal sixelgd enhanced font \'verdana,9\';" -e'

and a statement

SELECT i, sin(i) FROM generate_series(0, 6.3, 0.05) g(i) :gnuplot "plot '-'with lines ls 3"

generates this image:




8 comments:

  1. Did you come across a good guide for building the most recent commit of gnome-terminal, or found a package or something?

    On Ubuntu 20.04 I got started installing from source, but it looks like it also requires building vte, dconf, and pcre... Just running ./autogen.sh I get:


    ```
    error: Package requirements (vte-2.91 >= 0.61.90
    glib-2.0 >= 2.52.0
    gio-2.0 >= 2.34.0
    gio-unix-2.0 >= 2.34.0
    gtk+-3.0 >= 3.22.27
    gsettings-desktop-schemas >= 0.1.0
    dconf >= 0.14.0
    uuid
    libpcre2-8 >= 10.00
    x11) were not met:

    and

    No package 'gsettings-desktop-schemas' found
    No package 'dconf' found

    ```

    I see that Dconf depends on glib and gtk... So did you have to completely rebuild gtk for this also?

    Would love to hear more about how you go sixel support in gnome-terminal working!

    ReplyDelete
  2. @Ryan Erwin - I have Fedora 32, and there is not necessary to build gtk. I had build vte and gnome-terminal only.

    ReplyDelete
  3. Today I installed Fedora 32 to try this, but I still get the same:
    > error: Package requirements (vte-2.91 >= 0.61.90

    vte-2.91 installed just fine:
    > [ryan@localhost gnome-terminal]$ PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig pkg-config --list-all | grep vte
    > vte-2.91 vte - VTE widget for GTK+ 3.0

    When I try to build gnome-terminal even specifying the PKG_CONFIG_PATH, I still get:

    PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig ./autogen.sh
    > checking for TERM... no
    > configure: error: Package requirements (vte-2.91 >= 0.61.90

    ReplyDelete
  4. @Ryan Ervin - first you have to build VTE (from gitlab) - sixel should be enabled explicitly "meson --reconfigure _build -Dsixel=true --prefix=/usr; ninja -C _build; sudo ninja -C _build install". The option "--prefix is necessary"

    important - it should print

    pkg-config vte-2.91 --libs
    -lvte-2.91 -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -lharfbuzz -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0

    ./autogen.sh -- fails,
    ./configure --disable-search-provider --without-nautilus-extension
    make
    sudo make install



    Next step is build of gnome-terminal. ./autogen.sh fails, but with different error, and I can run

    ReplyDelete
  5. I had same problem, and I have a problem with path /usr/local/ that is default. The most simply solution is change a prefix.

    ReplyDelete
  6. Last step is enabling SIXEL in compatibility tab

    ReplyDelete
  7. I kept on reading that makefile error as a problem locating `vte` but in my case it was actually that I was missing: `libuuid-devel`

    For anyone else who has problems building, in addition to Pavel's instructions, if you get stuck on this... `error: Package requirements`, all of the lines are literally being tested at the same time and you don't know which line fails...

    You need to make sure you've got each of these libraries:

    ```
    pkg-config --exists --print-errors "vte-2.91 >= 0.61.90" "glib-2.0 >= 2.52.0" "gio-2.0 >= 2.34.0" "gio-unix-2.0 >= 2.34.0" "gtk+-3.0 => 3.22.27" "gsettings-desktop-schemas >= 0.1.0" "dconf >= 0.14.0" "uuid" "libpcre2-8 >= 1.000"
    ```

    ReplyDelete
  8. You need to install libuuid-devel

    sudo dnf install libuuid-devel

    ReplyDelete