2 pontos por GN⁺ 2025-06-17 | 1 comentários | Compartilhar no WhatsApp
  • Chawan é um novo navegador web TUI que funciona em terminais baseados em texto
  • Esta versão 0.2.0 inclui todos os recursos essenciais da fase MVP e está sem bugs críticos conhecidos
  • Exige apenas as bibliotecas libssh2, libbrotli e OpenSSL/LibreSSL, com várias dependências antigas removidas
  • Também é disponibilizado como binário estático e pacote .deb para Linux amd64, facilitando a distribuição e a instalação
  • A próxima versão terá como foco melhorias de desempenho no módulo de layout e uma experiência de UI melhor

Apresentando o Chawan 0.2.0

O Chawan é um projeto open source de navegador web leve baseado em interface de usuário de terminal (TUI), projetado para permitir navegação simples na web em ambientes de texto. Esta versão 0.2.0 é a primeira release estabilizada com todos os principais recursos da fase de produto mínimo viável (MVP), sem relatos de bugs críticos importantes até o momento.

Distribuição e instalação

  • Um tarball da árvore-fonte é disponibilizado, e quem quiser compilar manualmente pode seguir as instruções no README
  • Há uma distribuição em binário estático para Linux amd64, que pode ser instalada facilmente após extrair o arquivo usando o comando make install
    • A remoção pode ser feita com make uninstall
  • A mesma distribuição também é fornecida no formato de pacote .deb, podendo ser instalada diretamente em sistemas baseados em Debian

Informações para mantenedores de pacotes

  • As dependências obrigatórias em tempo de execução do Chawan são as seguintes:
    • libssh2
    • libbrotli (incluindo libbrotlicommon e libbrotlidec)
    • OpenSSL (3.0 ou superior) ou LibreSSL (testado com OpenBSD 7.7)
  • zlib, libseccomp, termcap/ncurses, libcurl e outras usadas em versões de desenvolvimento anteriores não são mais necessárias e, por isso, foram removidas das dependências
  • Se surgirem problemas durante o empacotamento, é recomendável entrar em contato com o desenvolvedor antes de aplicar patches, pois há grande chance de o problema ser resolvido diretamente no upstream

Planos futuros

  • Esta release 0.2.0 levou mais tempo do que o esperado, mas foi a versão escolhida para distribuição oficial por já contar com todos os recursos do MVP
  • O branch v0.2 daqui em diante receberá apenas correções de bugs, enquanto a adição de novos recursos continuará no branch master
  • A próxima release terá como metas principais melhorar o desempenho e a precisão do módulo de layout e tornar a UI mais amigável ao usuário

Importância e vantagens do projeto

  • O Chawan é um navegador web otimizado para ambientes de terminal, permitindo acessar conteúdo web em servidores e ambientes com recursos limitados
  • Diferentemente de navegadores web em texto tradicionais, ele se destaca por oferecer suporte a protocolos modernos de criptografia e compressão, além de minimizar dependências
  • Por ser open source, é vantajoso para extensões adicionais e customização

1 comentários

 
GN⁺ 2025-06-17
Comentários do Hacker News
  • Sempre fico feliz quando vejo um projeto escrito em nim; tenho a impressão de que nim é uma das linguagens mais interessantes, situada em algum ponto entre C/C++ e python. Em comparação com o tamanho da comunidade nim, a produtividade dos usuários parece alta, o que me dá a sensação de que minha opinião sobre nim está certa mesmo sem eu conhecer tão bem a linguagem. É uma pena que nim não tenha conseguido crescer de forma mais popular.

  • @shiomiru, queria saber quais são os melhores recursos para aprender os conceitos relacionados a TTY. Aceito recomendações, sejam gratuitas ou pagas. Sobre TTY, conheço a introdução ao TTY do linusakesson.net, mas reconheço a limitação de que ela não cobre termcap/terminfo/curses. Em outro comentário, mencionaram o livro Termcap & Terminfo da O'Reilly (também dá para ler online aqui).

    • Por causa da experiência de chawan com seu próprio módulo de terminal customizado, não tenho um entendimento tão profundo do X/Open curses padrão. Para sequências de escape reais, considero a documentação ctlseqs.ms do XTerm um material extremamente útil. Também tirei muitas ideias do projeto notcurses, do nick black, e recomendo especialmente as anotações dele sobre "sprixels".
  • Sempre acho bom ver uma abordagem nova que dá para usar por curiosidade ou pesquisa por um tempo, sem recorrer a mais um motor baseado em Chrome. Fiquei animado com o que foi apresentado hoje e quero testar eu mesmo depois da aula. Como uma alternativa muito legal, especialmente em ambientes sem sixel, recomendo o port de terminal do chromium: carbonyl. O autor original não consegue mais desenvolvê-lo ativamente, então os recursos são bem limitados, e vários itens como atalhos de teclado e salvamento de arquivos ainda não são suportados. Mesmo assim, a compatibilidade Web e o frescor da ideia são muito impressionantes. Espero que alguém com experiência em rust dê continuidade ao projeto; quando olhei alguns meses atrás, não havia nenhum fork popular.

  • Gosto muito desse tipo de projeto. Seria ótimo ter uma lista de sites baseados em texto. Dois de que gosto pessoalmente são plaintextsports.com e lite.cnn.com.

  • Muito legal. Acabei de compilar a partir do código-fonte no termux de um Lenovo M8 4ª geração, e só precisei instalar nim. Fiquei impressionado por ter sido instalado de forma limpa, sem usuário root.

  • É uma implementação realmente bonita. Estou animado para usar em tarefas reais e ver até onde dá para ir. O site do HN fica muito confortável de ler.

  • Sempre procurei fazer meu site ficar bonito também no Links, e agora estou animado por ter mais um candidato. Com algum suporte a CSS, aumentam também as coisas com que preciso me preocupar, como o espaçamento entre elementos. No Links, eu simplesmente ignorava completamente margin/padding e alinhava menus e afins de forma limpa em uma linha, mas agora a situação ficou mais complicada.

    • Em princípio, o objetivo era que funcionasse "simplesmente", sem configuração extra, mas na prática isso às vezes não acontece. Nesses casos, pode considerar um bug. Se você realmente precisar de CSS customizado para layouts em grid, chawan suporta a media query padrão de grid.
  • Projeto muito legal, e ainda por cima feito em nim. Quando digito cha example.com, fico totalmente perdido porque não faço ideia de como usar os comandos básicos (hjkl etc.). Quando aperto números, eles aparecem no canto inferior esquerdo, mas fora isso nada reage. Compilei eu mesmo em MacOS Sequoia 15.5 Apple Silicon com Nim 2.24. A página Web carrega bem, mas os comandos não funcionam. Estou deixando passar alguma coisa ou isso é um bug?

    • Tive o mesmo comportamento em vários terminais diferentes, como Ghostty, iTerm2 e Terminal.app.
  • Achei interessante que ele não usa mais termcap/ncurses. Isso quer dizer que o processamento do terminal é feito diretamente?

    • Foi explicado que Chawan na prática não usava ncurses, e sim apenas termcap. Como ncurses inclui uma implementação de termcap internamente, isso pode causar confusão. No começo, como eu tinha usado w3m, comecei com termcap, mas hoje ele é quase uma interface inútil e nem consegue expressar true color, necessário em terminais modernos. A única vantagem seria que talvez funcionasse, por sorte, em terminais extremamente antigos dos anos 80, mas mesmo isso tem pouco valor. Em vez de migrar para terminfo, decidi abandonar essa abordagem e adotar consultas diretas ao terminal. Também há um banco de dados de terminais embutido, usado apenas para identificar alguns valores de TERM incompatíveis com XTerm. Se o terminal responder corretamente às consultas, ele funciona bem independentemente do valor de TERM.
  • Fiquei impressionado como ele compila facilmente no macOS com apenas um make. É bom ver surgir um substituto moderno para o elinks.