Terminal de 16 cores (console, no X) mostra apenas 8 cores?

1

Eu tenho usado o Arch Linux no meu novo laptop e estou tentando configurá-lo de tal forma que eu não tenha necessidade de um servidor DE ou X - eu só quero utilitários de linha de comando e um VC (produtividade e economia de mim mesmo, tudo isso). De qualquer forma, estou tentando fazer as cores dos terminais funcionarem corretamente. Eu não decidi entre o xterm e o urxvt - honestamente, qualquer que eu possa conseguir este trabalho é provavelmente o que eu vou usar, pelo menos até eu entender melhor a questão.

Essencialmente, minha configuração (pelo que entendi, portanto, leve com sal) é que no VC1 eu tenho um emulador de terminal em cores xterm / urxvt 16 rodando (também, eu uso o Zsh, se é importante). Eu uso o Tmux para multiplexar, então meu .zshrc e .tmux.conf arquivos em ~/ tem linhas que definem o terminal padrão para (xterm / rxvt) -16color.

Se eu lanço o emacs diretamente no terminal ou dentro do Tmux e corro M-x list-colors-display, mostra 16 nomes de cores. Os primeiros oito são os regulares e são coloridos corretamente. No entanto, as cores 9 a 16 são as brilhantes e aparecem como texto branco em fundo preto sem cores atribuídas a elas.

Eu tenho a impressão de que .Xresources é onde vão as configurações de cor, da forma *color0: #353535 e tal. Todas as 16 cores estão listadas aqui, com valores que eu gostaria que elas tivessem. No entanto, os oito que são coloridos não estão nem nos matizes corretos - eles estão na cor marcante e de alto contraste a que são padronizados, não no tema mais maduro que eu baixei para testar.

Eu li que você precisa correr xrdb -merge ~/.Xresources para fazer essas configurações entrarem em jogo. No entanto, eu não tenho xrdb e quando eu instalei, recebi um erro 'display not found' (sem surpresa), então o removi.

A questão então, finalmente, é: o que eu faço para fazer o xterm / rxvt saber (a) exibir todas as 16 cores (já que tenho certeza que os brilhos também têm padrões, então parece que algo está errado lá) e ( b) para usar as configurações de cor (e outras) que eu dou em .Xresources (ou em outro lugar, se aplicável) sem usar xrdb.

Obrigado por qualquer insight!

jake-low
fonte
O que são DE e VC?
RedGrittyBrick
Desculpa. DE = Desktop Environment (por exemplo, GNOME, KDE, etc.) e VC = Virtual Console (VC1 até (geralmente) 7 são os terminais que você vê quando pressiona ALT + F1 a ALT + F7, então VC1 é o primeiro (e padrão, sem X executando) console virtual).
jake-low

Respostas:

1

Se você estiver usando console, não um X-server, as configurações de cor não serão controladas por ~ / .Xresources. Para aplicativos de linha de comando e curses, é o valor de $ TERM e as entradas correspondentes em termcap e terminfo, que determinam como as cores são exibidas.

Tmux pode complicar as coisas, eu não tentei, então não posso aconselhar. Eu faria as coisas funcionarem direito sem primeiro.

RedGrittyBrick
fonte
Aha Bem, isso explicaria isso. Obrigado!
jake-low
Acompanhamento: Eu encontrei algumas informações úteis sobre o banco de dados terminfo, mas estou confuso porque quando eu abro um (/ usr / share / terminfo / * / *) no emacs ele aparece como rabisco. Talvez seja assim que deve parecer, mas é ilegível para os humanos. Alguma ideia do porquê?
jake-low
1
@andhrimnir: Ao contrário do termcap, o banco de dados terminfo é um formato binário, não um formato de texto. Você pode decodificá-lo para texto e você pode compilar um formulário de texto para produzir o arquivo terminfo binário. Vejo man infocmp, man tic, man terminfo. Experimentar infocmp ansi e procure por colors#8, setf=\E[3%p1%dm, setb=\E[4%p1%dm
RedGrittyBrick
1

Correndo em um Linux console (sem X), definindo TERM para xterm (qualquer sabor) ou rxvt (qualquer sabor) não dará bons resultados. o linux descrição do terminal é a mais utilizada.

Compare aqueles com infocmp, por exemplo.,

infocmp xterm linux

e você verá várias diferenças.

Um aspecto das "cores brilhantes" não é aparente na descrição do terminal: o console do Linux exibe negrito texto como mais brilhante texto. Algumas pessoas ficam confusas com isso, e referem-se às combinações de negrito + cor como cores adicionais (elas não são, porque o aplicativo pedia negrito , que é um atributo de vídeo como sublinhado - que alguns dispositivos também podem renderizar como uma cor).

o xterm tem seqüências de controle por manipular 16 cores como tal; o console do Linux não . As variações de TERM que foram julgados não foram especificados, mas supondo que se tentou xterm-16color, então isso produziria seqüências de escape para "cores 8-15" que não são reconhecidas pelo console do Linux e produziriam o branco sobre preto (sem cor) que foi descrito.

Se você executar um programa que torna o texto em negrito em algum outro tipo de terminal, você terá a mesma probabilidade de obter uma renderização em negrito de uma maneira diferente ( como isso ).

Thomas Dickey
fonte