Como personalizar o prompt da linha de comando no UNIX/Linux — parte 3

Neste texto vou mostrar como é fácil aplicar cores às informações exibidas no prompt da linha de comando do seu terminal.
Esta é a terceira parte de uma série de artigos sobre como configurar o prompt do seu emulador de terminal e serve para todos os Linux e UNIX (o que inclui os BSD e o MacOS), desde que estejam usando o Bash como emulador — por causa disto, talvez dê para incluir o Windows também nesta história.
Como, neste momento, não tenho um Mac em mãos, só pude testar os exemplos dados no Linux (Fedora 25, Debian 9 e OpenSUSE Tumbleweed).
Se você tiver alguma dúvida, durante a leitura, dê uma olhada nos links ou nos outros artigos (parte 1 e parte 2) desta série — tenho certeza de que a resposta estará em um destes lugares.

A tabela de cores

Use a relação de códigos de efeitos e cores, abaixo, para alterar os exemplos de prompt.

  • 0 —  efeito nenhum
  • 1 —  efeito negrito ou cor mais forte. Transforma a cor preta em cinza em alguns terminais
  • 2 —  efeito esmaecido ou mais fraco. Transforma a cor branca em cinza em alguns terminais
  • 3 —  efeito itálico
  • 4 —  efeito sublinhado
  • 7 —  efeito de inversão das cores
  • No tempo dos monitores monocromáticos, em fósforo, os efeitos eram muito úteis para ajudar a diferenciar tipos de arquivos e tornar mais legíveis os textos de interação com os usuários em scripts.
    Segue a lista de cores de frente ou foreground:

  • 30 —  preto
  • 31 —  vermelho
  • 32 —  verde
  • 33 —  amarelo
  • 34 —  azul
  • 35 —  púrpura
  • 36 —  ciano
  • 37 —  branco
  • Segue a lista de cores de fundo ou background:

  • 40 —  preto
  • 41 —  vermelho
  • 42 —  verde
  • 43 —  amarelo
  • 44 —  azul
  • 45 —  púrpura
  • 46 —  ciano
  • 47 —  branco

Os primeiros códigos (referentes aos efeitos) não irão funcionar em todos os emuladores de terminal. Portanto, não espere muito deles.
Você também pode encontrar uma tabela de cores no site do Mewbie: http://www.mewbies.com/geek_fun_files/color_scripts/color_scripts_codes.png.
ansi color codes table

Experimente as cores

As relações de cores ANSI podem ser usados em várias ocasiões. Quando estiver fazendo um script, na maioria das linguagens é possível colorir o texto de saída, para interagir com o seu usuário.
Você pode usar este código Bash, para experimentar as cores e os efeitos dados acima:

# as letras do texto na cor ciano ou cyan
echo -e "\e[36mQue cor é esta?"

Se quiser alterar apenas a cor de fundo…

# cor de fundo vermelho
echo -e "\e[41mQue cor é esta?"

Para aplicar o efeito negrito:

# vermelho forte
echo -e "\e[1;31mQue cor é esta?"

Aplique o efeito itálico; cor de frente ciano; cor de fundo amarelo:

echo -e "\e[3;36;43mQue cor é esta?"

Eu sei que dá para ficar brincando horas com isso aí… mas a gente precisa voltar a falar do command prompt.

Como aplicar cores ao prompt da linha de comando

Baseado nos exemplos dos artigos anteriores, aplique as cores, inserindo um dos códigos dos exemplos acima, tal como destacado abaixo:

PS1='\[\e[3;36m\][\d, \T]\n\[\e[0;33m\]\u@\h\[\e[1;36m\][ \w ] '

Note que a diferença é que o código de cores do PS1 precisa estar entre os caracteres “ \[\e[ ” e “ \] “.
Sinta-se à vontade para compartilhar, nos comentários, como você configurou o seu prompt!

Referências

http://www.mewbies.com/acute_terminal_fun_08_get_colorized_on_the_terminal.htm#color_scripts.
https://en.wikipedia.org/wiki/ANSI_escape_code#Colors.

Como ajustar brilho, gamma e relação de cores, com o aplicativo xgamma, no Linux.

O aplicativo xgamma vem instalado por padrão em muitas distribuições Linux e pode ser usado para controlar diversos aspectos da imagem do seu monitor.
Use-o para obter uma imagem mais confortável para trabalhar, ver filmes, ler artigos etc.
Você pode usar valores com até 3 casas decimais, representando um percentual.
Assim, 0.750 significa 75%.
demonstração do uso do aplicaivo xgamma

Como usar o xgamma para ajustar o monitor

Você pode verificar as configurações atuais de gamma do seu display, com o comando abaixo:

xgamma

Atualmente, a minha configuração é Vermelho=70%, Verde=50% e Azul=30%:

-> Red  0.700, Green  0.500, Blue  0.300

Você pode alterar a intensidade de cada cor (red, blue, green), referindo-se a ela especificamente:

xgamma -rgamma 0.7 -bgamma 0.3 -ggamma 0.5

O aplicativo irá informar a configuração que estava em vigor e em seguida a nova configuração:

-> Red  0.900, Green  0.900, Blue  0.900
<- Red  0.700, Green  0.500, Blue  0.300

Você também pode aplicar o mesmo valor a todos de uma só vez:

xgamma -gamma 0.7
-> Red  0.700, Green  0.500, Blue  0.300
<- Red  0.700, Green  0.700, Blue  0.700

captura de tela xgamma
O funcionamento do xgamma vai depender diretamente dos drivers de vídeo usados e a documentação oficial adverte para o fato de que o aplicativo está obsoleto.
Use o xrandr, se não conseguir obter o resultado desejado com o xgamma, portanto.

Use o LS_COLORS para alterar as cores dos arquivos por tipos, nas listagens com ls.

Quem usa o terminal, no GNU/Linux pode se beneficiar das listagens, com o comando ls, que mostrem os arquivos colorizados por tipo. Nomes de diretórios, links (para diretórios), nomes de arquivos de imagem etc. cada qual com sua própria cor — diferenciando-os dos demais.
Por um lado, há o argumento irrefutável da estética: é elegante e agradável trabalhar em um terminal colorido.
Por outro lado, ver a diferença visual entre um nome de arquivo e um link, entre outras situações, pode prevenir remoções acidentais.
Captura de tela da listagem do diretório
Este assunto foi abordado no artigo Como alterar as cores dos nomes dos diretórios no terminal — leia-o para complementar as informações deste artigo.
Estas cores são controladas pela variável de ambiente LS_COLORS, controlada pelo comando dircolors e você pode alterar todas a seu critério.
Entre os motivos para mudar o esquema de cores do LS_COLORS, está a visibilidade quando você deixa de usar um terminal com fundo preto e muda pro fundo mais claro (branco, por exemplo).
Este artigo aborda um método de configuração que te permita ver os nomes de arquivos diferenciados por cores, em função de seu tipo.

Como configurar o seu perfil para ver listagens coloridas

Normalmente a configuração já vem pronta, em qualquer distro GNU/Linux. Se você usa o comando ls no terminal e não vê arquivos em cores diferentes, é possível que a configuração não esteja ativada.
Tente o comando ls assim:


ls --colors

Se os arquivos forem listados em cores diferentes (diretórios, são tradicionalmente em azul), tudo está pronto no seu sistema.
Para facilitar a sua vida, crie um alias (apelido) para o comando ls --colors:


alias ls="ls --color -Nx"

As opções ‘-Nx’, acima, servem apenas para reorganizar a listagem, para você ver uma quantidade maior de arquivos na tela — não tem nada a ver com este artigo, portanto. Você pode removê-las quando terminar de testar as configurações.
A solução, acima, é temporária. Quando você reiniciar sua sessão Linux, o valor do alias será perdido.
Para tornar o alias permanente, abra o arquivo ~/.bashrc e retire as “#” (marcas de comentários) do início das seguintes linhas:


alias ls='ls --color'

LS_COLORS='di=1:fi=0:ln=31:pi=5:so=5:bd=5:cd=5:or=31:mi=0:ex=35:*.rpm=90'

export LS_COLORS

Se as linhas não existirem, acrescente-as ao final do arquivo.
Explicando o código:

  • alias ls='ls --color' — como já foi dito, esta linha faz com que o comando ls adquira o significado que se encontra entre aspas.
  • LS_COLORS='di=1:fi=0:ln=31:pi=5:so=5:bd=5:cd=5:or=31:mi=0:ex=35:*.deb=90' — define a variável de ambiente LS_COLORS com os valores entre aspas (que serão explicados depois). Recomendo fazer suas alterações nesta linha.
  • export LS_COLORS — armazena na memória os valores da variável.

Ajustar o LS_COLORS faz muito mais do que apenas melhorar o visual das suas listagens ls.
O visual melhora, com toda certeza — mas ajuda principalmente a identificar fácil e rápido os arquivos no seu sistema — principalmente quando estamos procurando por algo em diretórios que não costumamos frequentar.

Como personalizar as cores dos itens do diretório

Se você não está satisfeito com as cores padrão do sistema ou deseja impressionar os seus amigos com um terminal customizado, veja quais são os itens que você pode alterar (todos).
Os itens cujas cores podem ser personalizadas (eu só uso 5 destes) seguem listados abaixo:

  • di = diretório
  • fi = file ou arquivo comum
  • ln = link simbólico
  • pi = arquivo fifo
  • so = socket file
  • bd = arquivo especial de bloco (buffered)
  • cd = arquivo especial de caracteres (unbuffered)
  • or = link simbólico apontando para um arquivo não existente (órfão)
  • mi = arquivo inexistente apontado por um link simbólico (visível quando você usa o comando ls -l
  • ex = arquivo executável (que tenha ‘x’ nas suas permissões).
  • Você ainda pode acrescentar arquivos por suas extensões: *.pdf, *.deb, *.txt etc.

Através da tentativa (e erro) é possível chegar a uma configuração satisfatória.
Veja, abaixo, as cores e os efeitos possíveis:

  • 0 = cor padrão do sistema
  • 1 = negrito
  • 4 = sublinhado
  • 5 = texto piscando
  • 7 = campo revertido
  • 31 = vermelho
  • 32 = verde
  • 33 = laranja
  • 34 = azul
  • 35 = púrpura
  • 36 = ciano
  • 37 = cinza
  • 40 = fundo preto
  • 41 = fundo vermelho
  • 42 = fundo verde
  • 43 = fundo laranja
  • 44 = fundo azul
  • 45 = fundo púrpura
  • 46 = fundo ciano
  • 47 = fundo cinza
  • 90 = cinza escuro
  • 91 = vermelho claro
  • 92 = verde claro
  • 93 = amarelo
  • 94 = azul claro
  • 95 = púrpura claro
  • 96 = turquesa
  • 100 = fundo cinza escuro
  • 101 = fundo vermelho claro
  • 102 = fundo verde claro
  • 103 = fundo amarelo
  • 104 = fundo azul claro
  • 105 = fundo púrpura claro
  • 106 = fundo turquesa

Você pode achar estranho, mas algumas destas variações eram usadas nos antigos monitores de fósforo monocromático (verde, âmbar, branco etc) ou coloridos.
Em monitores monocromáticos, a única forma de fazer diferenciação entre os tipos de arquivos é através de recursos como diferenças na tonalidade, no fundo, uso de sublinha, negrito, invertido etc.

A dica para criar um visual retrô para o seu terminal é combinar vários destes recursos com apenas uma cor.

Ao usar uma combinação como di=5;31;42 você pode obter um efeito bem interessante (olhe a tabela, acima, para ter uma idéia).
O que você acha?
Use os comentários para compartilhar o seu esquema de cores favorito. 😉

Como compilar e instalar o Redshift no Linux

O Redshift é um programa que protege os seus olhos e o seu sono através de algumas configurações automáticas do seu monitor — o aplicativo aquece a temperatura das cores do display, variando a intensidade de acordo com o horário do dia.
entardecer
Neste artigo, expliquei como instalar o Redshift no Ubuntu e dei várias dicas de configuração, para ajustar melhor o funcionamento do aplicativo às suas necessidades.
Neste post, vou mostrar o passo a passo para compilar o Redshift em seu sistema.
A vantagem de compilar seus programas é que você normalmente vai usar código mais atual e mais ajustado.
Mesmo não sendo um “usuário avançado”, você pode se beneficiar ao baixar e compilar o código fonte — isto não é complicado.

  • Software compilado, roda melhor no seu computador.
  • É possível obter versões mais novas do software, no site do desenvolvedor, ainda não disponíveis nos repositórios da sua distro.

Não bagunce o seu sistema: Se o Redshift já estiver instalado, você deve removê-lo, antes de prosseguir.
Se estiver afim, baixe o código do redshift e prossiga na leitura.
Após baixar o pacote com o código do Redshift, note que há um arquivo de texto, chamado HACKING, que contém as instruções para compilar.
Ao final deste arquivo, há uma relação de bibliotecas de desenvolvimento que precisam estar instaladas para você poder compilar o Redshift.
São as dependências:

* autotools, gettext
* libdrm (Optional, for DRM support)
* libxcb, libxcb-randr (Optional, for RandR support)
* libX11, libXxf86vm (Optional, for VidMode support)
* geoclue (Optional, for geoclue support)

Acima, eu destaquei, com fundo mais escuro, as dependências que vou instalar no meu sistema (XUbuntu 14.04).
Além destas, vou ter que instalar o autoconf e o gettext, pacotes de ferramentas necessárias para compilar código em C.
Veja o processo, passo a passo:

sudo apt-get install autotools-dev libxcb1-dev libxcb-randr0-dev gettext autoconf autopoint
./bootstrap
./configure --enable-ubuntu --enable-gui --enable-randr
make
sudo make install

Se o processo for bem sucedido, já dá pra rodar o Redshift.
Se você quiser, pode remover parte dos pacotes instalados:

sudo apt-get purge autotools-dev libxcb1-dev libxcb-randr0-dev gettext autoconf autopoint

Uma vez instalado o programa, eles já não são mais necessários.
Se você tiver interesse em saber como usar as funções básicas do Redshift e como editar o arquivo de configuração do programa, leia este artigo.
Tenha noites/madrugadas produtivas! — e aproveite para compartilhar o post nas redes sociais. 🙂

Referências

Fonte: blog do Jon Lund Steffensen, um dos desenvolvedores.
Leia mais sobre como compilar seus programas no Linux.
Dicas de configuração no Wiki do ArchLinux.
Wikipedia: verbete sobre melatonina.