La escena del crimen
Zaragoza, cafetería del Hotel Pilar Plaza. Un café con leche, vistas a la basílica, y tu servidor con el flamante MacBook Air M3 dispuesto a trabajar un par de horas con Claude Code antes de una reunión.
Dos horas después: batería al 15%. Alerta roja. Pánico.
¿Pero cómo? Si solo estaba en una terminal escribiendo código. Ni vídeo, ni Zoom, ni nada que justifique semejante consumo.
Abro el Monitor de Actividad, pestaña de Energía, y ahí está el culpable: Ghostty, con un consumo acumulado de 3.600 en las últimas 12 horas. Para que te hagas una idea, Brave Browser consumió 125. Zoom con vídeo, 99. Claude (la app de escritorio), 46.
Mi terminal —una aplicación que muestra texto— consumió 30 veces más que un navegador web.
La ironía de las ironías
Párate un momento a pensar en lo que acabo de escribir.
Una terminal. Un emulador de VT100. Una tecnología de 1978. Literalmente una aplicación cuyo trabajo es mostrar letras en una pantalla, algo que un Commodore 64 hacía sin despeinarse.
Y en 2026, necesita una GPU para funcionar.
Dicho en cristiano: estamos usando la potencia de cálculo que podría renderizar Toy Story en tiempo real… para mostrar ls -la.
La terminal VT100 original consumía 30W incluyendo el monitor CRT. Mi MacBook Air, con su chip de última generación diseñado específicamente para eficiencia energética, consume más mostrando un git status que ejecutando una videollamada.
Es como usar un Ferrari para ir a comprar el pan. Pero peor, porque el Ferrari al menos tiene sentido si quieres ir rápido. Aquí no hay ninguna ventaja práctica: el texto se ve exactamente igual.
¿Por qué demonios una terminal necesita GPU?
Ghostty, Alacritty, Kitty y compañía son parte de una nueva generación de terminales «aceleradas por GPU». La promesa: renderizado más suave, mejor rendimiento con mucho output, fuentes más nítidas.
La realidad: consumen batería como si no hubiera un mañana para mostrar exactamente lo mismo que Terminal.app muestra usando la CPU.
El problema no es solo el renderizado. Es que cuando tienes Claude Code corriendo, hay output constante: spinners, logs, resultados de herramientas. Cada carácter que aparece en pantalla dispara el pipeline de renderizado de la GPU. Metal se activa, los shaders hacen su trabajo, los frames se componen…
Para mostrar un punto girando.
Por si fuera poco, estas terminales modernas no entran en «App Nap» correctamente. macOS tiene un sistema para pausar aplicaciones en segundo plano, pero si la terminal está mostrando un spinner animado, el sistema piensa que está haciendo algo importante y la mantiene activa.
Solución para pobres: Terminal.app
La solución más simple es la más obvia: usa Terminal.app.
Sí, la terminal que viene con macOS. La que parece que no ha cambiado desde 2005. La que no tiene GPU acceleration ni ligatures ni ninguna de las moderneces.
# Abre Terminal.app y ejecuta
claude
Funciona exactamente igual. Claude Code no sabe ni le importa desde qué terminal lo ejecutas. Y Terminal.app:
- Usa renderizado por CPU (eficientísimo en Apple Silicon)
- Entra en App Nap correctamente
- Consume una fracción de la batería
¿Es sexy? No. ¿Funciona? Perfectamente.
Solución mejorada: iTerm2 con perfiles
Si no puedes vivir sin tu terminal moderna, iTerm2 tiene una opción que Ghostty no: puedes desactivar el renderizado GPU.
Paso 1: Crear perfil «Batería»
- Abre iTerm2
Preferences→Profiles- Duplica tu perfil actual (botón
+abajo a la izquierda, luegoDuplicate Profile) - Nombra el nuevo perfil «Battery»
- En el perfil Battery:
Terminal→ desmarca «GPU Rendering»
Paso 2: Cambio manual
Cuando trabajes con batería, simplemente cambia al perfil:
Profiles → Battery (en el menú de iTerm2)
Dos clicks. Tu terminal ahora consume como un ciudadano responsable.
Paso 3: Cambio automático (opcional)
Si quieres que el cambio sea automático, añade esto a tu .zshrc o 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
Cada vez que abras una nueva pestaña, iTerm2 comprobará si estás con batería y cambiará al perfil eficiente automáticamente.
Ghostty: el elefante en la habitación
¿Y si quiero seguir usando Ghostty?
Pues va a ser que no hay solución elegante. Ghostty no tiene opción para desactivar GPU rendering. Es GPU o nada.
Puedes intentar:
- Minimizar la ventana cuando no la uses (fuerza algo parecido a App Nap)
- Reducir animaciones en la config (
cursor-style-blink = false) - Desactivar vsync si no te importa el tearing
Pero la realidad es que Ghostty está diseñado para rendimiento, no para eficiencia. Si trabajas regularmente con batería, no es la herramienta adecuada.
# ~/.config/ghostty/config
# Intentos desesperados de reducir consumo
cursor-style-blink = false
mouse-hide-while-typing = true
La reflexión
Hay algo profundamente irónico en todo esto.
En 1978, mostrar texto en una pantalla era trivial. En 2026, hemos conseguido convertirlo en una tarea que requiere hardware de última generación y consume más energía que una videollamada intercontinental.
Lo llaman progreso.
La próxima vez que alguien te venda una herramienta «optimizada» y «moderna», pregúntate: ¿optimizada para qué? Porque si la respuesta es «para que las letras aparezcan 2 milisegundos antes a costa de quemar la batería», igual el progreso va en la dirección equivocada.
Mientras tanto, Terminal.app sigue ahí. Fea, aburrida, funcionando perfectamente desde hace 20 años.
A veces lo viejo es viejo por algo. Y a veces, simplemente funciona.
Read this article in English.



