Existe uma maneira de alterar todas as cores disponíveis no console/terminal virtual?
Por console, quero dizer o que você obtém após pressionar CTRL + ALT + F1 e nada como xterm ou urxvt. Então, acho que isso significaria alterar
Posso alterar 8 cores usando sequências de escape como esta:
echo -en "\e]PY######"
onde Y é o ID numérico da cor (0 a 7) e ###### é o valor hexadecimal da cor.
Meu objetivo final é portar o esquema de cores solarizado para o console, porque quero ter a mesma aparência do vim, independentemente de estar no console ou no X.
Alguma sugestão sobre isso?
htop em xterm:
htop em xterm, cores solarizadas
htop no console, após aplicar as 8 cores:
htop no console, depois de aplicar as 8 cores consegui
Responder1
O console do framebuffer TTY não tem como ter mais de 8 a 16 cores sem hackear o kernel, veja esta citação: "Embora o frame-buffer do Linux suporte 256 (ou mais) cores, o driver do console do Linux não; portanto, os aplicativos do console ainda são limitado a 16 cores no console Linux, com buffer de quadros ou não."
Portanto, você não pode ter mais do que 16 ou 8 cores. Há um tutorial sobre como alterar as cores do terminal framebuffer (também conhecido como ctrl+alt+1) usando os mesmos comandos descritos em ~/.bashrc:cores no tutorial TTY
Responder2
Experimente esta função bash no console. Apropriadamente, não funciona em um terminal X (acho que por causa das guias). Verifique especialmente os três arquivos usados por último, a saber
/sys/module/vt/parameters/default_red
/sys/module/vt/parameters/default_grn
/sys/module/vt/parameters/default_blu
clr () {
clear # GFX bug otherwise
setterm -regtabs 4
Color_names="bla red gre yel blu mag cya whi"
Color_arr=($Color_names)
tput setaf 4
tput setab 7
echo -n " normal "
tput sgr0
echo -n " "
tput setaf 7
tput setab 4
echo " bright "
tput sgr0
for cmd in sgr0 bold
do
tput $cmd
for m in 0 1 2 3 4 5 6 7
do
tput setaf $m
echo -n ${Color_arr[$m]}" "
done
done
echo
tput sgr0
cat /sys/module/vt/parameters/default_red \
/sys/module/vt/parameters/default_grn \
/sys/module/vt/parameters/default_blu | sed s/,0/", "/g | \
sed s/^0/" "/g | \
tr "," "\t"
}
Editar em resposta ao comentário
Por exemplo, altere o segundo dígito no arquivo verde ( sys/module/vt/parameters/default_grn
) para 170
- isso dará à segunda cor (com índice 1) tanto verde quanto vermelho, e nada de azul (pelo menos no meu caso, porque tenho o dígito correspondente em default_red
170
, e 0
em default_blu
).
Agora, digite tput setaf 1; echo hi
. Aqui você coloca a cor de primeiro plano na cor com índice 1 (aquela que você alterou) e depois imprime. (Observe o oneliner com dois pontos para separar os comandos, caso contrário, seu prompt poderá redefinir o tput
intervalo entre eles.)
Se parecer o mesmo de sempre, tente echo -n '\033]R'
a tput
linha novamente. Agora,ambos"oi" deve ser meio amarelo.
Deixe-me saber se você fizer funcionar (ou não).