3 pontos por GN⁺ 2024-12-14 | 1 comentários | Compartilhar no WhatsApp
  • Recentemente, passei a pensar que tudo o que acontece no terminal é uma combinação dos quatro elementos a seguir

    • o papel do sistema operacional
    • o papel do shell
    • o papel do emulador de terminal
    • o papel do programa em execução (top, vim, cat etc.)
  • Os programas se comportam de forma surpreendentemente consistente

    • O POSIX define principalmente como o emulador de terminal, o SO e o shell funcionam, mas não há um padrão para como programas individuais devem se comportar
    • Ainda assim, os programas de terminal em geral funcionam de maneira consistente
  • Essas regras são descritivas, não prescritivas

    • Não se trata de convencer autores de programas de terminal de que eles devem seguir essas regras
    • É útil conhecer as regras básicas que você pode esperar ao usar um novo programa de terminal
  • Às vezes, a responsabilidade do programa não é clara

    • Por exemplo, encerrar um REPL ao pressionar Ctrl-D é algo que o programa precisa implementar explicitamente

Regra 1: programas não interativos devem encerrar ao pressionar Ctrl-C

  • Programas não interativos, em geral, encerram quando Ctrl-C é pressionado
  • Em programas interativos, Ctrl-C cumpre outro papel

Regra 2: TUIs devem encerrar ao pressionar q

  • Programas TUI como less e htop encerram ao pressionar q

Regra 3: REPLs devem encerrar ao pressionar Ctrl-D em uma linha vazia

  • A maioria dos REPLs encerra quando Ctrl-D é pressionado em uma linha vazia

Regra 4: não se deve usar mais de 16 cores

  • Programas de terminal quase não usam cores além das 16 cores ANSI padrão

Regra 5: deve haver suporte aproximado aos atalhos de teclado do readline

  • A maioria dos programas oferece suporte aos atalhos de teclado do readline

Regra 5.1: Ctrl-W deve apagar a última palavra

  • Quase não existem programas em que Ctrl-W não apague a última palavra

Regra 6: cores devem ser desativadas ao escrever em um pipe

  • A maioria dos programas desativa as cores ao escrever em um pipe

Regra 7: - significa stdin/stdout

  • Se - for passado em vez de um nome de arquivo, o programa lê de stdin ou escreve em stdout

  • Leva tempo para aprender essas regras

    • É preciso aprender onde as regras se aplicam, reconhecer exceções e assimilar os padrões de forma inconsciente
    • Escrever essas regras explicitamente pode ajudar outras pessoas a aprendê-las mais rápido

1 comentários

 
GN⁺ 2024-12-14
Comentários no Hacker News
  • Deve respeitar as cores padrão de primeiro plano e de fundo do usuário

    • Ao usar cores, o texto deve permanecer legível independentemente das cores padrão de fundo e de primeiro plano
    • Não se deve transmitir informação apenas por meio de cores
    • Emojis devem ser usados com cuidado
    • Não se deve apagar informações importantes em saídas com rolagem
    • Deve oferecer ao usuário configurações para escolher cores e elementos visuais
  • Recomenda as Command Line Interface Guidelines

    • Inclui regras como encerrar com Ctrl-C, aceitar - para stdin e desativar cores em pipes
  • Regras adicionais para ferramentas de linha de comando

    • Não se deve presumir um tipo específico de terminal
    • Deve-se assumir que pode não haver terminal
    • Deve seguir convenções comuns na estrutura de argumentos e saída
    • Deve usar os códigos de saída padrão de sysexits.h
    • Deve incluir --help no binário e páginas de manual
  • Informações sobre atalhos de teclado do readline/emacs

    • No macOS, é possível usar Ctrl-E, Ctrl-W e Ctrl-U
    • É possível instalar o programa rlwrap para adicionar recursos de edição de linha
  • Conselhos sobre o uso de cores

    • Não se deve usar mais de 16 cores
    • As cores devem ser configuráveis
  • Problema que ocorre ao usar Ctrl-D no GHCi

    • É preciso sair com o comando :q
  • Explicação sobre tratar ~ como diretório home

    • Funciona no shell, mas não funciona na API POSIX
  • O programa não deve adicionar arquivos ao diretório home

    • Deve respeitar XDG_CONFIG_HOME
  • Opinião sobre a consistência da CLI

    • A CLI é mais consistente do que a GUI
    • É difícil levar essa característica para a GUI
  • Processos de longa duração devem recarregar a configuração ao receber SIGHUP

  • Dica útil para conexões SSH

    • É possível encerrar a sessão SSH usando ~.