jonas / tig

Text-mode interface for git
https://jonas.github.io/tig/
GNU General Public License v2.0
12.27k stars 605 forks source link

Support for True Color (16 millions colors) #227

Open XVilka opened 10 years ago

XVilka commented 10 years ago

Now more terminals bring support for 16 million colors (see references below).

Here's a test case for terminal:

printf "\x1b[${bg};2;${red};${green};${blue}m\n"

The 256 colour palete is configured at start, and it's a 666 cube of colours, each of them defined as a 24bit (888 rgb) colour.

This means that current support can only display 256 different colours in the terminal, while truecolour means that you can display 16 milion different colours at the same time.

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"

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

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

Also, while this one is not exactly a terminal, but a terminal replayer, it still worth mentioning:

Parsing ANSI colour sequences, but approximating them to 256 palette

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

Terminal multiplexers

NOT supporting truecolour

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

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

Here are another console programs discussions:

Supporting True Colour:

Not supporting True Colour:

ZyX-I commented 10 years ago

Provided bug number for konsole is incorrect: correct one is https://bugs.kde.org/show_bug.cgi?id=107487.

XVilka commented 10 years ago

@ZyX-I thx! fixed.

jonas commented 10 years ago

Unless ncurses supports True Color, it sounds like it will take a lot of work to get Tig to support it.

XVilka commented 6 years ago

@jonas starting from version 6.1 ncurses supports this mode.

jonas commented 6 years ago

@XVilka That's great news, thanks for the update.

jmera commented 5 years ago

@jonas is this going to be picked up at some point? This would be a pretty nice feature.

spidey commented 4 years ago

What is the purpose of adding RGB support to tig? Is it only for specifying theme colors with more control/options?