The crime scene
Zaragoza, Hotel Pilar Plaza café. A latte, views of the basilica, and yours truly with a shiny new MacBook Air M3 ready to work a couple hours with Claude Code before a meeting.
Two hours later: battery at 15%. Red alert. Panic.
But how? I was just in a terminal writing code. No video, no Zoom, nothing that would justify this kind of consumption.
I open Activity Monitor, Energy tab, and there’s the culprit: Ghostty, with an accumulated consumption of 3,600 over the last 12 hours. For context, Brave Browser consumed 125. Zoom with video, 99. Claude (desktop app), 46.
My terminal—an application that displays text—consumed 30 times more than a web browser.
The irony of ironies
Stop for a moment and think about what I just wrote.
A terminal. A VT100 emulator. Technology from 1978. Literally an application whose job is to show letters on a screen, something a Commodore 64 did without breaking a sweat.
And in 2026, it needs a GPU to function.
In plain English: we’re using the computing power that could render Toy Story in real time… to display ls -la.
The original VT100 terminal consumed 30W including the CRT monitor. My MacBook Air, with its latest-generation chip specifically designed for energy efficiency, consumes more showing a git status than running a video call.
It’s like using a Ferrari to go grocery shopping. But worse, because the Ferrari at least makes sense if you want to go fast. Here there’s no practical advantage: the text looks exactly the same.
Why the hell does a terminal need GPU?
Ghostty, Alacritty, Kitty and company are part of a new generation of “GPU-accelerated” terminals. The promise: smoother rendering, better performance with lots of output, sharper fonts.
The reality: they consume battery like there’s no tomorrow to display exactly the same thing Terminal.app shows using the CPU.
The problem isn’t just rendering. It’s that when you have Claude Code running, there’s constant output: spinners, logs, tool results. Every character that appears on screen triggers the GPU rendering pipeline. Metal activates, shaders do their work, frames get composed…
To display a spinning dot.
As if that weren’t enough, these modern terminals don’t enter “App Nap” correctly. macOS has a system to pause background applications, but if the terminal is showing an animated spinner, the system thinks it’s doing something important and keeps it active.
Poor man’s solution: Terminal.app
The simplest solution is the most obvious: use Terminal.app.
Yes, the terminal that comes with macOS. The one that looks like it hasn’t changed since 2005. The one without GPU acceleration or ligatures or any of the modern bells and whistles.
| |
Works exactly the same. Claude Code doesn’t know or care which terminal you run it from. And Terminal.app:
- Uses CPU rendering (super efficient on Apple Silicon)
- Enters App Nap correctly
- Consumes a fraction of the battery
Is it sexy? No. Does it work? Perfectly.
Improved solution: iTerm2 with profiles
If you can’t live without your modern terminal, iTerm2 has an option that Ghostty doesn’t: you can disable GPU rendering.
Step 1: Create “Battery” profile
- Open iTerm2
Preferences→Profiles- Duplicate your current profile (hit the
+button bottom left, thenDuplicate Profile) - Name the new profile “Battery”
- In the Battery profile:
Terminal→ uncheck “GPU Rendering”
Step 2: Manual switching
When working on battery, simply switch to the profile:
Profiles → Battery (in the iTerm2 menu)
Two clicks. Your terminal now consumes like a responsible citizen.
Step 3: Automatic switching (optional)
If you want the switch to be automatic, add this to your .zshrc or config.fish:
| |
| |
Every time you open a new tab, iTerm2 will check if you’re on battery and automatically switch to the efficient profile.
Ghostty: the elephant in the room
What if I want to keep using Ghostty?
Well, there’s no elegant solution. Ghostty doesn’t have an option to disable GPU rendering. It’s GPU or nothing.
You can try:
- Minimize the window when not using it (forces something like App Nap)
- Reduce animations in the config (
cursor-style-blink = false) - Disable vsync if you don’t mind tearing
But the reality is that Ghostty is designed for performance, not efficiency. If you regularly work on battery, it’s not the right tool.
# ~/.config/ghostty/config
# Desperate attempts to reduce consumption
cursor-style-blink = false
mouse-hide-while-typing = true
The reflection
There’s something deeply ironic about all this.
In 1978, displaying text on a screen was trivial. In 2026, we’ve managed to turn it into a task that requires cutting-edge hardware and consumes more energy than an intercontinental video call.
They call it progress.
Next time someone sells you an “optimized” and “modern” tool, ask yourself: optimized for what? Because if the answer is “to make letters appear 2 milliseconds faster at the cost of burning through your battery,” maybe progress is going in the wrong direction.
Meanwhile, Terminal.app is still there. Ugly, boring, working perfectly for the past 20 years.
Sometimes old is old for a reason. And sometimes, it just works.