When The Terminal Finally Clicked

September 27, 2025 · 813 words · 4 min read

From something I avoided to a tool I rely on daily.

For years the terminal was something I opened only when a tutorial told me to. I'd paste a few commands, pray nothing breaks, then close the window until the next tutorial would force me to use it again. It felt brittle and unforgiving, like one typo could ruin my day.

Then at some point it stopped feeling that way. I don't remember the exact moment, but I think it was a short course for a totally unrelated product that happened to include a CLI section. The interface was simple and efficient, and that was enough to flip the switch. I stopped reaching for GUI apps and started spending more time in the terminal. I haven't really gone back since.

Once it clicked, I did what everyone does and tried every terminal emulator I could find. iTerm2 was the first one that stuck with me. Tabs, split panes, hotkey windows, endless settings, it simply felt more capable than the default macOS terminal. Then I tried Warp because it was the new thing at the time and I lasted maybe two days. The AI features were everywhere and constantly in the way! "AI command search", "AI explains this error", "AI suggests a fix". Meh. AI cut me some slack. I really get the intent, and I'm sure it works for some people, but it felt like having someone standing behind me offering unsolicited advice. Sometimes I just want to run ls without commentary.

I eventually ended up on Ghostty, and that's where I plan to stay. It's fast, properly native-feeling fast, and it's focused. You can tell Mitchell Hashimoto built it because he wanted a better tool for himself, and often that principle is what makes all the difference. The config tells you everything you need to know about the philosophy behind it.

toml
font-family = Iosevka
font-size = 13
theme = dark:Catppuccin Frappe,light:Catppuccin Latte
window-padding-x = 10
window-padding-y = 10

Five lines of key-value pairs and you're done. I also started keeping dotfiles at some point, though all I have is my .zshrc, some aliases, a .gitconfig, Ghostty config and a few scripts that automate repetitive stuff. I like keeping it simple. I'm trying to avoid being one of those people with 3,000 line scripts that provision an entire system from scratch, because that always felt like infrastructure disguised as performance art and it's just silly. But having a few dozen lines that make the terminal feel like mine? Absolutely worth it! A custom prompt that shows Git status, aliases for commands I type fifty times a day, and a few functions that chain together things I kept doing manually. The trick is knowing when to stop, because you can spend infinite time optimizing your shell config and never be truly done. At some point you're just procrastinating, it's a balancing act.

Here's something wild! You can build terminal UIs with React now. Actual React components rendering in your terminal, with the same patterns you'd use for web apps. There's a library called Ink that lets you write TUIs (text user interfaces) with components, state, hooks, the whole deal.

jsx
import React from "react";
import { render, Box, Text } from "ink";
 
const App = () => (
  <Box flexDirection="column" padding={1}>
    <Text color="green">Terminal UI with React!</Text>
    <Text dimColor>This is actually rendering in your terminal</Text>
  </Box>
);
 
render(<App />);

It abstracts away all the terminal escape codes, cursor positioning, color handling, all the stuff that makes building TUIs feel like pulling teeth. You write components and it figures out how to render them, which is perfect for people like me who know React but have zero interest in learning ncurses or dealing with raw ANSI codes. That said, it's still worth understanding what's actually happening underneath. React in the terminal is magic until something breaks, and then you need to know what stdout and stderr are, how terminal buffering works, why your colors look wrong. The abstraction is great, but it's not bulletproof.

I think the reason the terminal finally clicked for me is that I stopped thinking of it as this legacy thing I had to tolerate and started seeing it as a tool that's genuinely good at what it does. GUIs are great for discovery and visual feedback, but when you know exactly what you want to do, typing it is almost always faster than clicking through menus. git status is faster than opening a Git client. grep -r "search term" . is faster than using a search dialog. And once you're comfortable, you can automate almost anything. Scripts, aliases, pipes, repetitive tasks that I kept doing manually, they all vanished (or at least the ones I bothered to automate). There's something super satisfying about a clean terminal with a good color scheme and a prompt that shows you exactly what you need to know, especially after a long day when you just want things to work and get out of the way.

I'm not saying everyone should use the terminal for everything, use what works for you. But if you've been avoiding it because it seemed intimidating, it might be worth another look. It took me years of casual exposure before something shifted and it all made sense, but now I can't imagine working any other way.