Uma possibilidade, se o terminal suportar, é usar a sequência de escape Change Color do terminal. Aparentemente, o konsole não suporta isso. Do documento de sequência de controle do Xterm ( ctlseqs ):
OSC Ps ; Pt BEL
Ps = 4 ; c ; spec -> Change Color Number c to the color specified by spec, i.e., a name or RGB specification as per XParseColor. Any number of c name pairs may be given. The color numbers correspond to the ANSI colors 0-7, their bright versions 8-15, and if supported, the remainder of the 88-color or 256-color table.
O que isto significa é que a seqüência de controle \e]4;NUMBER;VALUE\a
mudará a aparência da cor NUMBER . NUMBER é um número de cor (0–7 para as oito cores básicas, 8–15 para as versões brilhantes e muito mais se o terminal suportar mais cores). O VALUE é algo que XParseColor entende, como como uma especificação RGB #123456
ou um X nome da cor (procure por rgb.txt
em sua máquina ou use xcolors
para ver as possibilidades).
Por exemplo, o comando a seguir altera a cor azul básica (cor 4) e sua variante brilhante (4 + 8) para conter um pouco de verde:
printf '3]4;4;#004080;12;#0040ffprintf '3]4;4;#004080;12;#0040ff%pre%7'
7'
Observe que isso altera todos os caracteres exibidos atualmente nessa cor específica na janela. Não há como alterar o significado de uma cor apenas para caracteres exibidos posteriormente; se é isso que você quer, você terá que configurar cada programa exibido dentro do terminal para usar números de cores diferentes ao falar com o terminal.
Acontecer exatamente quando você está digitando em uma sessão ssh será muito complicado, mas lidar com casos comuns é razoavelmente simples: use um wrapper em torno de ssh que mude a paleta de cores, então rode ssh e finalmente mude a cor paleta de volta. Exemplos de casos que isso não irá resolver estão suspendendo o processo ssh e rodando o ssh dentro da tela ou do tmux.