screen-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

24 bit colour support request.


From: Антон Кочков
Subject: 24 bit colour support request.
Date: Thu, 11 Feb 2016 17:13:20 +0300

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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]