>From bd215324fde6a79302f5f19456f755d9be98daed Mon Sep 17 00:00:00 2001 From: Jan Beich Date: Sun, 14 Jun 2020 03:51:24 +0000 Subject: [PATCH] Add RGB fallback if environment has COLORTERM=truecolor * src/term.c (init_tty): When COLORTERM=truecolor is declared override setaf/setab/colors terminfo capabilities with RGB support. --- doc/misc/efaq.texi | 3 +++ src/term.c | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/doc/misc/efaq.texi b/doc/misc/efaq.texi index be1ffc026dd..fa09cf67471 100644 --- a/doc/misc/efaq.texi +++ b/doc/misc/efaq.texi @@ -1595,6 +1595,9 @@ xterm-direct2 xterm with direct-color indexing (old) xterm-direct xterm with direct-color indexing @end example +If Terminfo database is not available 24-bit direct color mode can +still be enabled by defining @env{COLORTERM} to @samp{truecolor}. + Terminals with @samp{RGB} capability treat pixels #000001 - #000007 as indexed colors to maintain backward compatibility with applications that are unaware of direct color mode. Therefore the seven darkest diff --git a/src/term.c b/src/term.c index 94bf013f4a0..50547a1c21d 100644 --- a/src/term.c +++ b/src/term.c @@ -4168,6 +4168,13 @@ use the Bourne shell command 'TERM=...; export TERM' (C-shell:\n\ could return 32767. */ tty->TN_max_colors = 16777216; } + /* Fall back to xterm+direct (semicolon version) if requested by COLORTERM */ + else if ((bg = getenv("COLORTERM")) != NULL && !strcasecmp(bg, "truecolor")) + { + tty->TS_set_foreground = "\033[%?%p1%{8}%<%t3%p1%d%e38;2;%p1%{65536}%/%d;%p1%{256}%/%{255}%&%d;%p1%{255}%&%d%;m"; + tty->TS_set_background = "\033[%?%p1%{8}%<%t4%p1%d%e48;2;%p1%{65536}%/%d;%p1%{256}%/%{255}%&%d;%p1%{255}%&%d%;m"; + tty->TN_max_colors = 16777216; + } } #endif