Posso alterar a paleta padrão de um terminal xterm-256color?

2

Eu notei que com um xterm de 16 cores normal eu posso reatribuir os valores de cor no arquivo .Xresources usando os comandos "* color0: #" a "* color15: #".

Mudei para o xterm-256color com a intenção de usar mais cores, mas as atribuições de cores não parecem estar mais funcionando.

Existe uma maneira de reatribuir a paleta de 256 cores? Ou há outra configuração xterm para permitir mais opções de cores?

    
por Solomon Bothwell 07.12.2016 / 19:41

2 respostas

1

Você pode programar a paleta de cores usando seqüências de escape, ou melhor, usando tput .

Existe um script nas fontes do xterm que demonstra as sequências de escape:

einvertendoapaletacomoscript:

Issoépara xterm , é claro. Algumas das aparências do xterm demoraram um pouco para implementar esse recurso (parcialmente), e algumas ainda não fizeram isso.

Você poderia compilar o xterm para suportar 256 recursos de cores, mas perder o UTF-8, como indicado no manual :

           Resources past color15 are available as a compile-time option.
           Due to a hardcoded limit in the X libraries on the total number
           of resources (to 400), the resources for 256-colors are omitted
           when wide-character support and luit are enabled.  Besides
           inconsistent behavior if only part of the resources were
           allowed, determining the exact cutoff is difficult, and the X
           libraries tend to crash if the number of resources exceeds the
           limit.  The color palette is still initialized to the same
           default values, and can be modified via control sequences.
    
por 07.12.2016 / 22:12
-1

Eu não sei dizer se "* color16" e amigos trabalham em .Xresources e, se não, por que não.

Você pode, no entanto, alterar dinamicamente as cores reais usando as seqüências de escape OSC 4, por exemplo, para mudar a cor 16 para #abcdef você deve fazer algo assim:

echo -ne '\e]4;16;#abcdef\a'

Você pode colocar essas instruções em .bashrc , com a condição de que a saída vá para um terminal ( if [ -t 1 ]; then... ) ou que o shell seja interativo (procure por "i" em $- ) para que você não o faça não quebre scp / rsync.

Isto é suportado por alguns emuladores de terminal, incluindo xterm e vte (gnome-terminal etc.), mas não por alguns outros, por ex. konsole.

As primeiras 16 cores são diferentes em todos os emuladores de terminal e, portanto, oferecem uma configuração para os valores preferidos (via arquivo de configuração ou no diálogo de preferências gráficas, dependendo do emulador). As cores adicionais 232 (6x6x6 cores cubo + 24 tons de cinza), no entanto, são exatamente as mesmas em todos os emuladores de terminal, de acordo com o meu conhecimento. Ao redefini-los, você diverge de "todos", o que pode não ser a melhor ideia.

Você também pode dar uma olhada no suporte de cores reais. Tem uma disponibilidade bastante limitada, no entanto. É suportado por alguns emuladores de terminal populares, como gnome-terminal e konsole, mas não por outros populares como xterm ou uxrvt. Também dificilmente é suportado por qualquer aplicativo, mas é fácil usá-los se você estiver emitindo manualmente as sequências de escape (por exemplo, no prompt do shell ou em um script simples).

    
por 07.12.2016 / 22:08