24 bit colour support request.

Антон Кочков <[email protected]>
Newsgroups gmane.comp.gnu.screen.user
Message-ID <CA+8M6wnq5GPqe4-bYc4tcyZrfFnxcDzBRaq2cWcfZ+o-L==_jg@mail.gmail.com>
Good day!
All I wanted is to ask for 24bit (truecolor) color support. Here is
copy-paste from my gist, tracking the support among various console
programs (https://gist.github.com/XVilka/8346728)
As you can see, it is now pretty widely adopted, and screen is a one
of major players of console world, lacking truecolor support:

----------------------------------------------------------------------------------------------------------------------------

Truecolour escape codes doesnt uses a colour palete. It just specifies
the colour itself.

Here's a test case:

printf "\x1b[38;2;255;100;0mTRUECOLOR\x1b[0m\n"

or https://raw.githubusercontent.com/JohnMorales/dotfiles/master/colors/24-bit-color.sh
or http://github.com/robertknight/konsole/tree/master/tests/color-spaces.pl
or https://git.gnome.org/browse/vte/tree/perf/img.sh?h=vte-0-36
or just run this:

awk 'BEGIN{
    s="/\\/\\/\\/\\/\\"; s=s s s s s s s s;
    for (colnum = 0; colnum<77; colnum++) {
        r = 255-(colnum*255/76);
        g = (colnum*510/76);
        b = (colnum*255/76);
        if (g>255) g = 510-g;
        printf "\033[48;2;%d;%d;%dm", r,g,b;
        printf "\033[38;2;%d;%d;%dm", 255-r,255-g,255-b;
        printf "%s\033[0m", substr(s,colnum+1,1);
    }
    printf "\n";
}'

Keep in mind that it is possible to use both ';' and ':' as parameters
delimiter.

According to Wikipedia[1], this is only supported by xterm and konsole.

[1] https://en.wikipedia.org/wiki/ANSI_color

Currently, there is no support for the 24-bit colour descriptions in
the terminfo/termcap database and utilites. See the discussion thread
here: https://lists.gnu.org/archive/html/bug-ncurses/2013-10/msg00007.html

Here are terminals discussions:

Now supporting truecolour

st (from suckless) [delimeter: semicolon] -
http://lists.suckless.org/dev/1307/16688.html
konsole [delimeter: colon, semicolon] -
https://bugs.kde.org/show_bug.cgi?id=107487
iterm2 [delimeter: colon, semicolon] - only in the nighties
https://code.google.com/p/iterm2/issues/detail?id=218
qterminal [delimeter: semicolon] -
https://github.com/qterminal/qterminal/issues/78
Tera Term [delimeter: colon, semicolon] - Windows platform
ConEmu [delimeter: semicolon] - Windows platform
FinalTerm [delimeter: semicolon] - abandoned, iTerm2 borrowing it's
ideas and features.
mintty [delimeter: semicolon] Cygwin and MSYS/MSYS2 since commit
https://github.com/mintty/mintty/commit/43f0ed8a46c6549cb9a3ea27abc057b5abe13bdb
(2.0.1 release) - Windows platform
all libvte based terminals (since 0.36 version) [delimeter: colon,
semilocon] - https://bugzilla.gnome.org/show_bug.cgi?id=704449

libvte-based Gnome Terminal
libvte-based sakura
libvte-based Terminator - use GTK+3 version.
libvte-based Lilyterm - since commit
https://github.com/Tetralet/LilyTerm/commit/72536e7ba448ad9ef1126ce45fbde3a3407a271b
libvte-based ROXTerm
libvte-based evilvte - no release yet, version from git
https://github.com/caleb-/evilvte
libvte-based Termit
libvte-based Termite
libvte-based Tilda
libvte-based tinyterm
libvte-based lxterminal - with --enable-gtk3 configure flag.
libvte-based mlterm - with --with-gtk=3.0 configure flag

But there are bunch of libvte-based terminals for GTK2 so they are
listed in the another section.

Parsing ANSI colour sequences, but approximating them to 256 palette

xterm (though doing it wrong: "it uses nearest colour in RGB colour
space, with a usualfalse assumption about orthogonal axes")
linux console (since v3.16):
https://github.com/torvalds/linux/commit/cec5b2a97a11ade56a701e83044d0a2a984c67b4

Note about colour differences: a) RGB axes are not orthogonal, so you
cannot use sqrt(R^2+G^2+B^2) formula, b) for colour differences there
is more correct (but much more complex) CIEDE2000 formula (which may
easily blow up performance if used blindly) [2].

[2] https://github.com/neovim/neovim/issues/793#issuecomment-48106948

NOT supporting truecolour

urxvt (patched version [3] available) -
http://lists.schmorp.de/pipermail/rxvt-unicode/2013q3/001826.html
Terminology (E17) - https://phab.enlightenment.org/T746
mrxvt (looks abandoned) - https://sourceforge.net/p/materm/feature-requests/41/
aterm (looks abandoned) - https://sourceforge.net/p/aterm/feature-requests/23/
fbcon (from linux kernel) - https://bugzilla.kernel.org/show_bug.cgi?id=79551
FreeBSD console - https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=191652
PuTTY (patched version [4] {xterm-like approximation to 256 colors}
and [5] {real true colors} available) - Windows platform
libvte and GTK2 - based:

libvte-based GTKTerm2
libvte-based stjerm (looks abandoned) -
https://github.com/stjerm/stjerm/issues/39
libvte-based xfce4-terminal - will be solved automatically since Xfce
slowly migrating to the GTK+3

[3] You can download patched version here
https://github.com/spudowiar/rxvt-unicode/tree/24bit

[4] You can download patched version here https://github.com/rdebath/PuTTY

[5] You can download patched version here https://github.com/halcy/PuTTY

Terminal multiplexers

tmux - has support since 427b820...
screen
dvtm - not yet supporting True Colour https://github.com/martanne/dvtm/issues/10
pymux - tmux clone in pure Python (to enable truecolour run pymux with
--truecolor option)

Here are another console programs discussions:

Supporting True Colour:

irssi - https://github.com/irssi/irssi/pull/48
neovim - https://github.com/neovim/neovim/commit/8dd415e887923f99ab5daaeba9f0303e173dd1aa
elinks - http://repo.or.cz/w/elinks.git/blob/HEAD:/configure.in#l1410
(./configure --enable-true-color)
s-lang library -
http://lists.jedsoft.org/lists/slang-users/2015/0000020.html (since
pre2.3.1-35, for 64bit systems)

Not supporting True Colour:

mutt - http://dev.mutt.org/trac/ticket/3674
mc - http://www.midnight-commander.org/ticket/3145#comment:1 - demo
patches attached
ncurses library -
https://lists.gnu.org/archive/html/bug-ncurses/2013-10/msg00007.html
termbox library - https://github.com/nsf/termbox/issues/37
mcabber - https://bitbucket.org/McKael/mcabber-crew/issue/126/support-for-true-color-16-millions-colors
emacs - http://emacs.1067599.n5.nabble.com/RFC-Add-tty-True-Color-support-td299962.html
and http://emacs.1067599.n5.nabble.com/bug-20243-True-color-terminal-support-tc354040.html
vim - https://bitbucket.org/ZyX_I/vim/commits/branch/24-bit-xterm
tig - https://github.com/jonas/tig/issues/227


Best regards,
Anton Kochkov.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.