Quando é apropriado usar cores em um aplicativo de linha de comando?

14

Atualmente eu tenho um aplicativo de linha de comando em C chamado btcwatch . Ele tem uma opção -C que pode receber como um argumento que compara o preço atual do Bitcoin com um preço que foi armazenado antecipadamente com -S . Exemplo de saída com esta opção é:

$ btcwatch -vC  # -v = verbose
buy: UP $ 32.000000 USD (100.000000 -> 132.000000)
sell: UP $ 16.000000 USD (100.000000 -> 116.000000)

O dilema é se usar cores para a string UP ou DOWN (verde e vermelho, respectivamente). A maioria dos aplicativos de linha de comando que conheço (além do git) evitam a cor na saída. Em meu desejo de btcwatch parecer e ser bastante "padrão" (uso de getopt , Makefiles, etc), não tenho certeza se a cor pareceria fora de lugar nessa situação.

    
por Marco Scannadinari 01.11.2013 / 19:39
fonte

3 respostas

21

A coisa apropriada a fazer é tornar a coloração opcional, padrão para "off" e controlá-lo através de um sinalizador de linha de comando. Dessa forma, pessoas que não gostam dele ou cujo terminal não suporta isso não são afetadas, pessoas que gostam dele podem usá-lo, e pessoas que realmente gostam dele podem definir um apelido ou atalho para predefinir a opção. Todo mundo está feliz.

    
por 01.11.2013 / 19:43
fonte
9

Eu consideraria apropriado usar cores quando:

  • Existem 'grupos' de itens e grupos de cores ajudam a agrupar visualmente os itens.

  • Existem conjuntos de campos 'label: value' e você deseja que os rótulos (ou valores) se destaquem.

  • Existem itens que se beneficiariam da exibição em vermelho / verde, por exemplo, parar / ir, bom / ruim, etc.

  • A maioria das informações é de fundo, mas um item importante deve se destacar.

por 01.11.2013 / 22:35
fonte
5

Outro fator importante a ser considerado é que a coloração, dependendo da plataforma, pode adicionar sequências de escape de caracteres. Para compilações nessas plataformas, se o modo atual / padrão for a saída de cores, é costume detectar se a saída do programa é um PIPE e se a cor de decapagem, se for o caso.

Isso é para que as seqüências de escape de cores não eliminem os programas que lêem a saída.

    
por 02.11.2013 / 04:32
fonte