É possível desativar o ajuste automático de cores do Terminal no Lion?

35

Embora seja ótimo que o Terminal agora tenha suporte interno para alterar as cores ANSI, acho irritante que ele ajuste automaticamente as cores para melhorar o contraste, o que significa que as cores que eu realmente escolho frequentemente acabam desbotadas ou desbotadas de alguma outra maneira . Aqui está uma captura de tela explicando o problema:

captura de tela das configurações de cores do OS X Terminal.app

Isso me incomoda, porque eu gosto de usar o mesmo esquema de cores no Terminal e no MacVim e, com esse manuseio de cores pelo Terminal, elas não coincidem com as do MacVim.

Alguém sabe de uma solução para isso, além de mudar para o iTerm 2 (o que eu prefiro não - gosto do resto do Terminal, especialmente alguns toques da GUI, como a campainha visual pulsante). Obrigado!

Johan Sahlén
fonte
1
Boa pergunta - ajustes também parecem ser feitos para a transparência de janelas, não importa prestação sub pixels ...
Kopischke
@kopischke, o ajuste de contraste mínimo não leva em conta a opacidade da cor de fundo, se é isso que você quer dizer.
Chris Página
Ajudaria se você publicasse uma captura de tela mostrando as cores esperadas em um fundo preto. Números à parte, eu realmente não consigo ver a diferença entre as amostras de cores na janela de preferências e as cores do texto no terminal da sua captura de tela, por isso é difícil dizer quão significativa é a diferença.
Chris Página
Agora sei por que desprezo o OS X. Perdi mais de 6 horas tentando descobrir por que um esquema de cores que eu projetei no Linux foi mutilado no Mac do meu amigo - suspeitei de problemas com a conversão do espaço de cores (sRGB vs Apple RGB), mas Eu nunca imaginaria que era culpa do terminal ... Obrigado por confirmar meu diagnóstico.
Jan Warchoł 21/02
Fora do tópico, mas o iTerm2 permite que você tenha uma campainha visual atraente. Prefs> Avançado> Campainha visual pisca a tela inteira, não apenas um ícone de campainha.
user2551 2/02

Respostas:

23

Aqui está o truque que você precisa saber: os valores configurados via RGB são alterados, os configurados via HSB não.

Eu tive um problema semelhante ao usar o (ótimo) esquema de cores Solarized : o MacVim tinha uma cor de fundo mais escura (e correta) do que o Terminal, embora eu estivesse definindo todos os valores RGB corretos de acordo com as especificações Solarized. Veja aqui:

Basicamente, você precisa saber o que seus valores de cor são suposto ser para cada um dos Terminal ANSI, texto e fundo (note que este é na guia Janela) cores e, em seguida, colocá-las através do seletor de HSB em vez de RGB. Veja este exemplo:

Por qualquer motivo (suspeito de algum tipo de perfil, ou talvez um ajuste no contraste, como você sugere), a cor RGB que você digita não é a que você recebe. Você também notará que, depois de definir os valores via HSB, a mudança para o seletor RGB mostrará opções diferentes das esperadas. Todas as conversões de valor Solarized concordam de acordo com o Photoshop; parece ser algo que o seletor de cores da Apple está fazendo por você.

Ryan Dlugosz
fonte
9
Esta é uma resposta incrivelmente boa.
Jason Salaz
Parece que o RGB não está mutilado como tal, apenas modificado pelas configurações de opacidade do selecionador, conforme resposta de @eirnym - a combinação dos 2 não só explica isso, mas resolve de duas maneiras. Ótimo!
stuffe
2
Para não chover no desfile, mas não posso confirmar que isso resolve o problema - o Terminal.app continua modificando os valores inseridos no espaço de cores HSB, mesmo ao definir o plano de fundo com os valores corretos (incluindo opacidade 100% e desfoque 0%) primeiro. Os valores brilhantes parecem menos propensos a isso, os não brilhantes mais. Talvez o seletor de cores no Terminal.app seja muito problemático, talvez tente ser "inteligente" em relação ao contraste e à faixa de cores (eu não colocaria a Apple no passado) - seja como for, a solução acima não funciona no meu sistema.
31412 kopischke
… Investigando um pouco mais, o problema parece estar enraizado no mapeamento de cores Solarized, do independente do dispositivo (espaço de cores LAB / HSB) ao espaço de cores dependente do dispositivo (RGB). Resultados consistentes podem ser alcançados ao selecionar o espaço de cores HSB, como mostrado acima, mas apenas ao mapear expressamente para o dispositivo RGB (no menu suspenso atrás da pequena seta no pequeno quadrado de cores à esquerda do menu suspenso de cores). As diferenças nos valores RGB nas tabelas de cores Solarized são explicadas pelo fato de Solarized mapeia para sRGB, enquanto o seletor de cores sempre mapeia implicitamente para o dispositivo RGB.
31412 kopischke
… O que indica que o seletor de cores do OS X foi projetado para pessoas que realmente sabem do que se trata esse espaço de cores (ou seja, designers gráficos), não para nós, os grunhidos do terminal :). [sim, OT, eu sei]
Kopischke
10

escolhendo 'Device RGB' no menu suspenso de amostras do Apple Color Picker

  1. Abra o seletor de cores
  2. Escolha a guia deslizantes
  3. Clique na amostra abaixo da lupa, à esquerda do controle deslizante
  4. Escolher Device RGB

Agora, as cores especificadas pelo valor hexadecimal não serão sujeitas à conversão do espaço de cores.

No Sierra, o seletor de espaço de cores mudou para o ícone de engrenagem: Seletor de espaço de cores Sierra

Fonte

Daniel Holz
fonte
2
Legal - obrigado por isso! Apesar de todas as proezas de design da Apple, é totalmente óbvio que clicar nele revelaria um menu.
22612 Ryan Dlugosz
Nota: se esta solução alternativa de usar cores com diferentes espaços de cores funcionar, é provável que se dependa de um erro no código de manipulação de cores, que deve funcionar com qualquer cor, e poderá parar de funcionar no futuro quando esse bug for corrigido.
Chris Page
1
Esse truque funcionou para mim; o truque do HSB não.
Jay
4

Os perfis de cores são definitivamente importantes, mas há outro problema oculto aqui: o Terminal.app ilumina automaticamente qualquer cor quando exibido sobre o fundo padrão. Aqui, por exemplo, estão as cores produzidas pelo Terminal.app executando o tema de cores Solarized , medido com o DigitalColor Meter no modo sRGB e comparado com os valores canônicos de sRGB Solarized.

Quando apresentado sobre um fundo preto (ou qualquer outra cor), o Terminal.app produz aproximadamente as cores corretas; no entanto, no plano de fundo padrão, todas as cores, exceto o padrão e o texto em negrito, são substancialmente brilhantes demais.

um teste de cores no Terminal.app.  As cores são as esperadas quando apresentadas sobre fundos coloridos, mas iluminadas quando apresentadas sobre o fundo padrão.

April Arcus
fonte
Votação negativa, porque esta não é uma resposta. Parece ser um comentário sobre a questão.
Chris Page
2
Como você gerou essa tabela de cores? Parece super útil.
Luke Davis
2

Abra as configurações da janela para o seu tema, alterne a cor do plano de fundo, defina o desfoque para 0% e a opacidade para 100%. Depois disso, suas cores serão as mesmas que você deseja. Além disso, você deve verificar todas as cores escolhidas para o texto para esses parâmetros.

insira a descrição da imagem aqui

Eir Nym
fonte
Votação negativa, porque isso não se aplica à pergunta, que é sobre o comportamento de contraste mínimo do Terminal e não é afetada pela opacidade do plano de fundo.
Chris Page
2

Em resumo: não, não há meios suportados para desativar isso.

O terminal aplica automaticamente um contraste mínimo ao exibir uma cor ANSI (ou tabela estendida de 256 cores) na cor de fundo do terminal ou ao exibir a cor de primeiro plano / texto do terminal em uma cor de fundo ANSI.

Isso é uma conveniência, para que você possa definir uma cor de plano de fundo ou primeiro plano e contrastá-las com as cores ANSI sem precisar ajustar todas as cores ANSI. Isso foi especialmente importante nas versões anteriores do Terminal, às quais faltava o suporte de Preferências para personalizar as cores ANSI.

As versões mais antigas do Terminal aplicavam o contraste mínimo a todas as combinações de cores, mas isso significava que, por exemplo, o texto vermelho-sobre-vermelho ANSI poderia ser legível, mas alguns programas exibem intencionalmente texto com a mesma cor de primeiro plano e plano de fundo para ocultá-lo. (para exibir dicas de jogos ou piadas, por exemplo). Por esse motivo, as versões mais recentes do Terminal não aplicam o contraste mínimo ao exibir uma cor ANSI sobre outra.

Agora, em vez de abordar apenas o estojo da mesma cor, o Terminal evita aplicar o contraste mínimo para todas as combinações de cores ANSI, porque é assumido que, se o usuário personalizar qualquer cor ANSI, os personalizará para que contrastem uns com os outros, conforme desejado . Supõe-se também que esses usuários ajustem ou levem em consideração as cores de plano de fundo e primeiro plano do terminal para se ajustarem ao esquema de cores desejado.

Se a solução alternativa para o uso de cores com diferentes espaços de cores - sugerida em outras respostas - funcionar, é provável que se dependa de um erro no código de manipulação de cores, que deve funcionar com qualquer cor e pode parar de funcionar no futuro quando esse bug for corrigido.

Se você é capaz de desabilitar ou ajustar explicitamente o comportamento de contraste mínimo é importante para você, recomendo que a Apple saiba preenchendo um relatório em https://developer.apple.com/bug-reporting/ usando qualquer ID da Apple.

Chris Page
fonte