As cores nos terminais são determinadas em duas etapas:
- o programa em execução no terminal diz ao terminal para usar um determinado número de cores;
- o terminal traduz cada número de cor em um valor de cor.
O Xterm tem uma sequência de escape para alterar o valor de cor associado a um número de cor. Não me lembro se o PuTTY suporta esta sequência; Eu sei que o Mintty funciona.
set_color_value () {
printf "\e]4;$1;$2\a"
}
set_color_value 4 '#6495ed' # set color 4 (blue) to CornflowerBlue
Essas configurações não sobreviverão a uma reinicialização do terminal. Você pode superar essa dificuldade adicionando a sequência de alteração da configuração do cursor à string de redefinição do seu terminal.
- Em um sistema baseado em terminfo usando ncurses, salve as configurações do terminal do terminal em um arquivo com
infocmp >>~/etc/terminfo.txt
. Edite a descrição para alterar a sequênciars1
(reinicialização básica), por ex. substituars1=\Ec
porrs1=\Ec\E]4;4;#6495ed\E\
. Com alguns programas e configurações, talvez seja necessário alterar também ors2
(reinicialização completa). Em seguida, compile a descrição do terminfo comtic ~/etc/terminfo.txt
(isso grava no diretório$TERMINFO
ou~/.terminfo
se não estiver definido). - Em um sistema baseado em termcap, obtenha as configurações termcap do seu banco de dados termcap (geralmente
/etc/termcap
). Altere as sequênciasis
(reposição básica) ers
(reposição total) para anexar as suas configurações, por ex. %código%. Defina a variável de ambiente:is=\Ec\Ec\E]4;4;#6495ed\E\:
para o valor editado (início e fim comTERMCAP
).
Agora você pode colocar algo assim em seu :
:
if [ "$(ps -p $PPID -o comm=)" = sshd ] &&
[ "$TERM" = "xterm" ]; then
set_color_value … # set color scheme
TERMCAP=… # if necessary
fi