![Como habilitar a saída colorida RGB no terminal?](https://rvso.com/image/1047589/Como%20habilitar%20a%20sa%C3%ADda%20colorida%20RGB%20no%20terminal%3F.png)
Estou tentando imprimir uma string colorida em um terminal gnome usando códigos de escape ANSI, mas, embora funcione para as cores personalizadas, ou mesmo para as 256 cores extras, não funciona com códigos RGB.
Então, simplificando:
cout << "\033[33m" << '.' << "\033[0m"; # prints with color
cout << "\033[38;5;135m" << '.' << "\033[0m"; # prints with color
cout << "\033[38;2;0;135;0m" << '.' << "\033[0m"; # doesn't work, prints with default color
Como posso gerar algo com um código de cores RGB no terminal gnome?
Estou seguindo este link para saídas:Código de escape ANSI da Wikipédia.
Eu adicionei:
$ export TERM=xterm-256color
Para meu arquivo .bashrc para suportar 256 cores e:
$ tput colors
Produz 256, se isso for importante.
Responder1
As cores RGB não podem ser usadas no terminal pelos seguintes motivos:
- Bash não escolhe as cores da linha de comando.
- Bash só pode especificar cores ANSI.
As duas razões acima estão intimamente ligadas. A maioria deles depende da tela e da especificação de cores ANSI. Se você usar um bom emulador de terminal, poderá definir cores RGB personalizadas para determinados códigos de cores ANSI.
O Bash como shell é impotente quanto ao que a tela pode fazer com os monitores. Ele apenas passa as palavras do terminal para a tela. A tela pode decidir o que fazer com isso. A tela pode decidir quais cores os códigos de escape ANSI representam (se o terminal permitir cores).
Uma solução alternativa é alterar as especificações de cores do terminal. No entanto, muito poucos (não conheço nenhum) permitem alterar as cores.
Responder2
Você precisa de vte >= 0,36 para que cores verdadeiras funcionem no gnome-terminal. Certifique-se de que seu vte seja recente o suficiente e, nesse caso, seu código deverá funcionar.
(Observação: quando você gera strings codificadas, como faz em seu aplicativo de exemplo, o valor de $TERM é necessariamente absolutamente irrelevante. Isso só importa se você estiver usando bibliotecas cujo comportamento depende disso, como ncurses.)