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
-
HTML → SkBitmap
A página é desenhada em memória offscreen. O Carbonyl intercepta viaHostDisplayCliente mapeamento de memória entre GPU, renderer e browser. -
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!("▄");
}
- Captura de texto
UmTextCaptureDeviceintercepta 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