A cena do crime
Zaragoza, cafeteria do Hotel Pilar Plaza. Um café com leite, vista para a basílica, e eu aqui com o novinho MacBook Air M3 pronto para trabalhar umas duas horas com Claude Code antes de uma reunião.
Duas horas depois: bateria em 15%. Alerta vermelho. Pânico.
Mas como? Se eu só estava num terminal digitando código. Nem vídeo, nem Zoom, nem nada que justificasse esse consumo absurdo.
Abro o Monitor de Atividade, aba Energia, e lá está o culpado: Ghostty, com um consumo acumulado de 3.600 nas últimas 12 horas. Para você ter uma ideia, o Brave Browser consumiu 125. Zoom com vídeo, 99. Claude (o app de desktop), 46.
Meu terminal — uma aplicação que mostra texto — consumiu 30 vezes mais que um navegador web.
A ironia das ironias
Para um momento para pensar no que acabei de escrever.
Um terminal. Um emulador de VT100. Uma tecnologia de 1978. Literalmente uma aplicação cujo trabalho é mostrar letras numa tela, algo que um Commodore 64 fazia sem suar.
E em 2026, precisa de uma GPU para funcionar.
Traduzindo: estamos usando o poder de processamento que poderia renderizar Toy Story em tempo real… para mostrar ls -la.
O terminal VT100 original consumia 30W incluindo o monitor CRT. Meu MacBook Air, com seu chip de última geração projetado especificamente para eficiência energética, consome mais mostrando um git status do que executando uma videochamada.
É como usar uma Ferrari para ir à padaria. Mas pior, porque a Ferrari pelo menos faz sentido se você quer ir rápido. Aqui não há nenhuma vantagem prática: o texto fica exatamente igual.
Por que diabos um terminal precisa de GPU?
Ghostty, Alacritty, Kitty e companhia fazem parte de uma nova geração de terminais “acelerados por GPU”. A promessa: renderização mais suave, melhor performance com muito output, fontes mais nítidas.
A realidade: consomem bateria como se não houvesse amanhã para mostrar exatamente a mesma coisa que o Terminal.app mostra usando a CPU.
O problema não é só a renderização. É que quando você tem o Claude Code rodando, há output constante: spinners, logs, resultados de ferramentas. Cada caractere que aparece na tela dispara o pipeline de renderização da GPU. O Metal se ativa, os shaders fazem seu trabalho, os frames são compostos…
Para mostrar um ponto girando.
Como se não bastasse, esses terminais modernos não entram em “App Nap” corretamente. O macOS tem um sistema para pausar aplicações em segundo plano, mas se o terminal está mostrando um spinner animado, o sistema acha que está fazendo algo importante e o mantém ativo.
Solução para pobres: Terminal.app
A solução mais simples é a mais óbvia: use o Terminal.app.
Sim, o terminal que vem com o macOS. Aquele que parece que não mudou desde 2005. Aquele que não tem aceleração por GPU nem ligatures nem nenhuma dessas modernidades.
# Abra o Terminal.app e execute
claude
Funciona exatamente igual. O Claude Code não sabe nem se importa de qual terminal você o executa. E o Terminal.app:
- Usa renderização por CPU (eficientíssima no Apple Silicon)
- Entra em App Nap corretamente
- Consome uma fração da bateria
É sexy? Não. Funciona? Perfeitamente.
Solução melhorada: iTerm2 com perfis
Se você não consegue viver sem seu terminal moderno, o iTerm2 tem uma opção que o Ghostty não tem: você pode desativar a renderização por GPU.
Passo 1: Criar perfil “Bateria”
- Abra o iTerm2
Preferences→Profiles- Duplique seu perfil atual (botão
+embaixo à esquerda, depoisDuplicate Profile) - Nomeie o novo perfil “Battery”
- No perfil Battery:
Terminal→ desmarque “GPU Rendering”
Passo 2: Mudança manual
Quando trabalhar com bateria, simplesmente mude para o perfil:
Profiles → Battery (no menu do iTerm2)
Dois cliques. Seu terminal agora consome como um cidadão responsável.
Passo 3: Mudança automática (opcional)
Se quiser que a mudança seja automática, adicione isso ao seu .zshrc ou config.fish:
# Para zsh (~/.zshrc)
if [[ $(pmset -g batt | grep -c "Battery Power") -gt 0 ]]; then
echo -e "\033]50;SetProfile=Battery\a"
fi
# Para fish (~/.config/fish/conf.d/iterm_battery.fish)
if test (pmset -g batt | grep -c "Battery Power") -gt 0
echo -e "\033]50;SetProfile=Battery\a"
end
Toda vez que abrir uma nova aba, o iTerm2 verificará se você está na bateria e mudará para o perfil eficiente automaticamente.
Ghostty: o elefante na sala
E se eu quiser continuar usando o Ghostty?
Bom, não vai rolar uma solução elegante. O Ghostty não tem opção para desativar renderização por GPU. É GPU ou nada.
Você pode tentar:
- Minimizar a janela quando não usar (força algo parecido com App Nap)
- Reduzir animações na config (
cursor-style-blink = false) - Desativar vsync se não se importar com tearing
Mas a realidade é que o Ghostty foi projetado para performance, não para eficiência. Se você trabalha regularmente na bateria, não é a ferramenta adequada.
# ~/.config/ghostty/config
# Tentativas desesperadas de reduzir consumo
cursor-style-blink = false
mouse-hide-while-typing = true
A reflexão
Tem algo profundamente irônico em tudo isso.
Em 1978, mostrar texto numa tela era trivial. Em 2026, conseguimos transformar isso numa tarefa que requer hardware de última geração e consome mais energia que uma videochamada intercontinental.
Chamam isso de progresso.
Da próxima vez que alguém te vender uma ferramenta “otimizada” e “moderna”, se pergunte: otimizada para quê? Porque se a resposta for “para as letras aparecerem 2 milissegundos antes às custas de queimar a bateria”, talvez o progresso esteja indo na direção errada.
Enquanto isso, o Terminal.app continua ali. Feio, chato, funcionando perfeitamente há 20 anos.
Às vezes o velho é velho por algum motivo. E às vezes, simplesmente funciona.
Este artigo foi escrito originalmente em espanhol e traduzido com a ajuda de IA.