lcy19870112 / mintty

Automatically exported from code.google.com/p/mintty
GNU General Public License v3.0
0 stars 0 forks source link

True Color (24 bit) or 16 million colors support #431

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
Here's a test case:

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

* 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

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

It's a common confusion about terminal colors... Actually we have this:
* plain ascii
* ansi escape codes (16 color codes with bold/italic and background)
* 256 color palette (216 colors+16gray + ansi) (colors are 24bit)
* 24bit true color (888 colors (aka 16 milion)

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

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

Truecolor escape codes doesnt uses a color palete. It just specifies the
color itself.

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

Here are terminals discussions:
==============================

Now supporting truecolor
------------------------

* st (from suckless) -  http://lists.suckless.org/dev/1307/16688.html
* konsole - https://bugs.kde.org/show_bug.cgi?id=107487
* iterm2 - https://code.google.com/p/iterm2/issues/detail?id=218
* all libvte based terminals:  https://bugzilla.gnome.org/show_bug.cgi?id=704449
    * Gnome Terminal
    * sakura
    * Terminator
    * Lilyterm
    * ROXTerm
    * evilvte
    * Termit
    * Tilda
    * stjerm
    * tinyterm
    * GTKTerm2

Parsing ANSI color sequences, but approximating them to 256 palette:
--------------------------------------------------------------------

* xterm
* mlterm - http://sourceforge.net/mailarchive/message.php?msg_id=31828705

NOT supporting truecolor:
-----------------------------

* urxvt -  http://lists.schmorp.de/pipermail/rxvt-unicode/2013q3/001826.html 
* Terminlogy (E17) - https://phab.enlightenment.org/T746
* mrxvt - https://sourceforge.net/p/materm/feature-requests/41/
* aterm - 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 

Here are another console programs discussions:
============================================

* mutt - http://dev.mutt.org/trac/ticket/3674
* mc - http://www.midnight-commander.org/ticket/3145#comment:1
* s-lang library - http://lists.jedsoft.org/lists/slang-users/2014/0000001.html
* ncurses library - 
https://lists.gnu.org/archive/html/bug-ncurses/2013-10/msg00007.html
* mcabber - 
https://bitbucket.org/McKael/mcabber-crew/issue/126/support-for-true-color-16-mi
llions-colors
* emacs - 
http://emacs.1067599.n5.nabble.com/RFC-Add-tty-True-Color-support-td299962.html
* vim - https://bitbucket.org/ZyX_I/vim/commits/branch/24-bit-xterm
* tig - https://github.com/jonas/tig/issues/227

Original issue reported on code.google.com by xvi...@gmail.com on 6 Jul 2014 at 11:04

GoogleCodeExporter commented 9 years ago
Looks like MinTTY already supports coloring terminal in raw RGB, which means 
this should be trivial to do:

https://code.google.com/p/mintty/source/browse/trunk/termout.c#907

Original comment by mkurc...@gmail.com on 27 Apr 2015 at 8:23