Executando verificação de segurança...
4

Carbonyl: um fork do Chromium que renderiza páginas da web direto no terminal

O desenvolvedor Fathy lançou o Carbonyl, um projeto que transforma o Chromium em um navegador de terminal real. Em vez de reimplementar layout ou fazer parsing de HTML como w3m ou lynx, o Carbonyl intercepta o pipeline gráfico do navegador e converte a renderização em blocos Unicode e cores ANSI, com suporte a texto interativo e entrada de usuário.

📰 Saiba mais em: https://cynews.vercel.app/show/45133935


Como funciona

  • O Chromium renderiza a página normalmente usando Skia.
  • O Carbonyl intercepta o bitmap e converte cada par de pixels em um caractere com cores ANSI (topo como background, base como foreground).
  • Textos são capturados diretamente da pipeline de glyphs e convertidos em Unicode, preservando legibilidade e seleção.
  • Inputs de mouse e teclado são tratados via sequências ANSI e redirecionados para o sistema de eventos do Chromium.

Pipeline de renderização

  1. HTML → SkBitmap
    A página é desenhada em memória offscreen. O Carbonyl intercepta via HostDisplayClient e mapeamento de memória entre GPU, renderer e browser.

  2. Bitmap → Blocos de terminal
    Cada célula do terminal usa U+2584 (meio bloco inferior) com cores ANSI 24-bit. O sistema imprime pares de pixels com mínimo movimento de cursor.

fn print_pixels_pair(top: RGB, bottom: RGB, cursor: (x, y)) {
 move_cursor(cursor);
 set_background(top);
 set_foreground(bottom);
 println!("▄");
}
  1. Captura de texto
    Um TextCaptureDevice intercepta os glyphs e converte para Unicode, permitindo renderização nítida e seleção de conteúdo textual.

Entrada e interação

Carbonyl escuta mouse e teclado via sequências ANSI (DCS), como:

fn report_mouse_down((x, y): (usize, usize)) {
  write!(stdin, "\x1b[<0;{y};{x}M");
}

Esses eventos são enviados para o Chromium via BrowserMainThread::PostTask, permitindo cliques, rolagem e digitação, como em um navegador gráfico.


Performance e otimizações

  • Renderização padrão: ~5 FPS com uso de CPU em torno de 400%
  • Escala LoDPI forçada para 1/7, reduzindo a carga gráfica
  • Hacks de compositing mantêm tudo na main thread
  • Após ajustes, uso de CPU em idle cai para quase zero e rolagem estabiliza em ~15%

Comentários da comunidade

  • “Finalmente um navegador de terminal com Chromium real”
  • “Impraticável no dia a dia, mas tecnicamente brilhante”
  • “Quero isso no meu servidor SSH agora”
  • Sugestões incluem suporte a true-color, resolução configurável e modos de input otimizados para SSH

Por que importa

O Carbonyl mostra como é possível reaproveitar engines gráficas complexas em ambientes restritos. Ele mantém compatibilidade total com CSS, JS e extensões, e ainda permite copiar texto, interagir com páginas e navegar como em um navegador GUI.

É uma aula prática sobre browser internals, renderização em terminal e engenharia reversa de interfaces.


🔗 Projeto: https://fathy.fr/carbonyl
📰 Notícia: https://cynews.vercel.app/show/45133935

Carregando publicação patrocinada...