teoria da cor terminal

4

TLDR: Qual é a teoria por trás das cores dos terminais?

Eu tenho um valor fixo de LS_COLORS em números: no=00:fi=00:di=01;34:ln=00;36:pi=40;33:so=00;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=00;33:*.cmd=00;33:*.exe=00;33:*.com=00;33:*.btm=00;33:*.bat=00;33:*.sh=00;33:*.csh=00;33:*.tar=00;31:*.tgz=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.zip=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.bz=00;31:*.tz=00;31:*.rpm=00;31:*.cpio=00;31:*.jpg=00;35:*.gif=00;35:*.bmp=00;35:*.xbm=00;35:*.xpm=00;35:*.png=00;35:*.tif=00;35:*.c=00;41:*.cpp=00;41:*.h=00;44:*.cu=00;43:*.cuh=00;43:ex=00;32

Gostaria de saber o que faz com que o gnome-terminal, o urxvt e o yakuake mostrem cores perceptivelmente diferentes para o mesmo tipo de arquivo? A diferença varia de muito similar (e ainda claramente diferente) a drasticamente diferente - marrom vs amarelo.

Da mesma forma, há diferenças em como a cor do vim aparece, vejo cores muito diferentes nos três terminais. Ambos quando t_Co = 8 (vim suportando 8 cores) e t_Co = 256 (vim suportando 256 cores).

O pior é que quando eu copio .XResources da internet que tem nomes ingleses para cores, o mesmo esquema de cores no vim mostra cores muito diferentes. (Eu acho que posso atribuir isso ao uso de nomes em vimscheme e redefinição de cores por .Xresources)

Alguém poderia me ajudar a entender a teoria de como funciona a cor do terminal? Um link funcionaria muito bem. Se alguém se sentir mais generoso, talvez possa dar dicas também para garantir que eu sempre tenha um ambiente padrão, especialmente no contexto do vim?

Devo observar que no yakuake, meu tema de cores é: "Tema do Linux" (que parece ser apenas o tema padrão) e no gnome-terminal eu não tenho tema. Quando eu verifico a opção 'cores do sistema do usuário', as cores são ainda mais desastrosas, e a saída em si é desconfigurada (por exemplo, baunilha ls mostrando cada arquivo em uma linha diferente). Para urxvt, os únicos campos relacionados a cores que defini em .Xresources e xrdb -q yields são:

Urxvt.background: #000000 
Urxvt.foreground: #FFFFFF

Ok, então algumas capturas de tela explicam do que estou falando (a primeira é sobre yakuake, segunda sobre urxvt)

A diferença é claramente maior ...

Usando: link (primeiro é yakuake, segundo em urxvt)

    
por 0fnt 12.06.2015 / 12:58

1 resposta

5

A paleta de cores indexada tem a renderização real aberta à interpretação - no hardware real, havia padrões diferentes (especialmente marrom vs. amarelo escuro, marrom é mais útil e mais agradável de se olhar).

Basta verificar isto: link

Em emuladores de terminal, isso depende da configuração. A maioria dos emuladores tem um modo definido ( echo $TERM ), que identifica qual hardware antigo está emulando. A cor é a menor das alterações - outros códigos de controle (seqüências de caracteres invisíveis que controlam a posição do cursor, negrito / inverter vídeo, piscando e qualquer outro) podem ter códigos diferentes também. Esse é o lixo que você às vezes consegue, quando você pressiona cursores quando o tipo de terminal está incorretamente configurado (por cima de ssh, por exemplo). Alguns emuladores mais sofisticados realmente não se importam com os antigos padrões de cores e permitem que você defina suas próprias cores (o Konsole - que Yakuake usa - tem perfis de cores). Emuladores de terminal modernos na verdade suportam mais cores do que isso (256), mas é claro, o aplicativo em execução no terminal tem que reconhecer esse recurso (por meio de termcap ou algo assim, ou lendo $TERM variable) e produzir as combinações de caracteres corretas para use-os.

O que você realmente quer ler é isso, existe até uma tabela de cores: link

    
por 12.06.2015 / 13:21