Colorindo o terminal

rainbownize_tela

A maioria das pessoas não se dá conta mas alguns emuladores de terminal em X suportam a exibição de caracteres usando um esquema de cores de 24-bit — o tal do True Color. Existe até existe uma “ferramenta” chamada lolcat que usa este recurso para exibir o conteúdo de um arquivo em belos padrões de arco íris!

Algo tão “útil” que eu resolvi fazer minha própria implementação. 🙂

A teoria

A sequência de escapes para se escrever um texto na cor que sua imaginação desejar é a seguinte (em Bash mas o exemplo é facilmente adaptável) :

printf "\x1b[38;2;«vermelho»;«verde»;«azul»m«Texto»\x1b[0m\n"

Só lembrando que vermelho, verde e azul devem ser números inteiros entre 0 e 255 e que para trocar a cor de fundo substitua o “38” por “48”.

O programa “rainbownize.pl”

Ele não é tão sofisticada quanto a lolcat, apenas me foquei em fazer algo que coubesse em uma tela de 80×25 caracteres e que pudesse servir de exemplo:

Para usá-lo basta enviar qualquer coisa que se deseje colorir (um arquivo ou a saída de um programa) e observar o resultado na tela:

$ cat rainbownize.pl | perl rainbownize.pl

Claro, algumas considerações:

  • A constante “STEP” guarda o incremento padrão¹ dos elementos em vermelho, verde e azul.
  • Sempre inicio em vermelho absoluto — o RGB(255,0,0) e
  • O código é burro e se enrola em qualquer sistema de codificação de caracteres que precise de dois bytes para — Unicode, ShiftJIS etc.

E boa diversão… 🙂

(¹) O valor em 0,9 foi o que me permitiu colocar todo o espectro de cores na tela.

Anúncios

3 comentários sobre “Colorindo o terminal

  1. nice! testado e aprovado, salvei o rainbownize.pl em minha $HOME/bin, crei um alias no meu shell ZSH e pronto:

    $ sudo tail -f /var/log/squid/access.log | rainbow

    Thanks por compartilhar.

    Curtir

  2. Pingback: Colorindo o terminal - true color, 24 bits - Linux em Ação XYZ

  3. Pingback: Colorindo o console | giovannireisnunes

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s