My Terminal Setup in November 2026

My Terminal Setup in November 2026

A snapshot of the terminal I use every day as of November 2026, from Ghostty and herdr to LazyVim, LazyGit, Hunk and Claude Code, and why I moved away from iTerm and tmux.

Photo by Markus Spiske
Published
Reading time
7 min read
Topics
Dev tools

Preface

The terminal is the place where I spend most of my working hours. I write code there, review code there, and lately, I talk to AI agents there too.

My setup keeps changing every year. Some tools stay, some tools quietly disappear, and some tools that I swore I’d never leave end up replaced by something new.

One thing that hasn’t changed, though: I live in the terminal. I’ve tried going back to VS Code a few times, but I just can’t. Once your fingers get used to doing everything from the keyboard, reaching for the mouse feels slow.

So I want to take a snapshot of what my terminal looks like right now, in November 2026. Partly to share it with you, and partly so that future me can look back and laugh at it 😄

Here’s the quick overview before we go into the details:

LayerTool
Terminal emulatorGhostty
Multiplexerherdr
Shellzsh + Oh My Zsh and its plugins
PromptOh My Posh
EditorNeovim + LazyVim
GitLazyGit
Code reviewHunk
Plan & doc reviewPlannotator
AI agentClaude Code
FontGeist Mono

Terminal Emulator: Ghostty

For years, I used iTerm2. It’s a great app and I have nothing bad to say about it. But one day I realized that I only used a tiny part of what it offers. Profiles, triggers, the built-in AI features, the dozens of preference tabs… I just never touched them.

What I actually want from a terminal emulator is simple: open fast, render text nicely, and stay out of my way.

That’s why I moved to Ghostty. It’s fast, it uses native macOS UI, and the defaults are good enough that I didn’t need to configure anything.

Fun fact: my Ghostty config file is literally empty. I’ve never felt the need to change anything there.

Multiplexer: from tmux to herdr

This is the biggest change in my setup this year.

I had been using tmux for a long time. My config was pretty standard: Ctrl + Space as the prefix, Vim-style keys to move between panes, the Catppuccin theme, and tmux-resurrect to bring my sessions back after a restart.

It worked well. But then my workflow changed. These days I often have a few AI agents running at the same time, each one in its own pane, working on different tasks. tmux doesn’t know anything about them. It can’t tell me which agent is waiting for my input, which one is still thinking, or which one has finished.

That’s where herdr comes in. It’s a terminal workspace manager built with first-class support for AI coding agents. It knows when an agent is working, when it’s blocked, and when it’s done, and it shows that right in the workspace.

The best part is that it also covers most of what I used tmux for: workspaces, tabs, split panes, and sessions that survive when I close the window. So the switch didn’t feel like giving something up.

A few things I like about it:

  • Agent status at a glance. I don’t need to check every pane to know which agent needs me.
  • Plugins. I use the Annotate plugin to select text in the terminal, leave a comment on it, and send it to the agent as context. It feels like leaving review comments, but for the terminal output.
  • Customizable layouts and themes. I’m currently using the atom-one-dark theme with Geist Mono at 14px. And yes, I also have a Windows 98 theme installed for fun.

To be honest, I removed tmux from my machine completely after a few weeks with herdr.

Shell: zsh + Oh My Zsh

I’m still using zsh with Oh My Zsh. It’s not the fastest option out there, but it’s familiar, and the plugin ecosystem saves me a lot of time.

These are the plugins I use:

~/.zshrc
plugins=(git zsh-autosuggestions nvm autojump alias-finder zsh-vi-mode)
  • git gives me short aliases like gst for git status and gco for git checkout. gst is one of my most used commands.
  • zsh-autosuggestions suggests commands from my history as I type. Press the right arrow and it’s done.
  • nvm loads Node.js versions automatically.
  • autojump lets me jump to any folder I’ve visited before by typing j plus a part of its name. For example, j trihargianto takes me straight to this website’s project.
  • alias-finder reminds me when I type a long command that already has an alias. It’s a nice way to slowly learn the aliases.
  • zsh-vi-mode brings Vim keybindings into the command line, which is great when I need to edit a long command.

I also have some aliases of my own:

Terminal window
alias vim="nvim"
alias lg="lazygit"

And I use thefuck to fix the typo in my previous command. Yes, that’s the real name of the tool 😅

Prompt: Oh My Posh

For the prompt, I use Oh My Posh with the M365Princess theme. It shows the current folder, the Git branch and status, and the Node.js version in a colorful but still readable way.

~/.zshrc
eval "$(oh-my-posh init zsh --config ~/.oh-my-posh-themes/M365Princess.omp.json)"

I used Powerlevel10k before, but Oh My Posh has a lot of ready-made themes, and the same config works across shells and operating systems.

Editor: Neovim + LazyVim

My editor is Neovim with LazyVim as the base config.

I tried building my own Neovim config from scratch once. It was a fun learning experience, but I ended up spending more time fixing my config than writing code. LazyVim gives me a solid setup out of the box, and I only override what I need.

Git: LazyGit

For Git, I use LazyGit. It’s a terminal UI that makes staging hunks, writing commits, rebasing and resolving conflicts much faster than typing the commands one by one. I just type lg and everything is there.

Code Review: Hunk

This one is a newer addition, and it’s now one of my must-haves.

Hunk is a review-first diff viewer for the terminal, built for changes written by AI agents. When an agent finishes a task, I open the changes in Hunk, go through them file by file, and leave notes on specific lines.

Why does this matter? Because AI agents can write a lot of code in a very short time, and reviewing it is now the bottleneck. I wrote more about this in Balancing Vibe Coding and AI-Assisted Coding. Hunk makes that review step feel like a proper code review instead of scrolling through a long git diff.

AI Agent: Claude Code

And finally, Claude Code. It’s tied with vim as my most used command after cd, which says a lot about how I work these days.

I use it for almost everything: exploring a codebase, writing features, reviewing changes, and even managing my notes. I also have a few Agent Skills to teach it how I like things done.

Combined with herdr and Hunk, my daily loop now looks like this:

  1. Start one or more Claude Code sessions in herdr panes.
  2. Let them work while I do something else, and check the herdr status when one of them needs me.
  3. Review the changes in Hunk and leave notes.
  4. Send the notes back to the agent, and repeat until I’m happy.
  5. Commit with LazyGit.

Closing

Looking at this setup, the biggest shift this year is clear: my terminal is slowly turning from a place where I type commands into a place where I manage AI agents. Tools like herdr and Hunk exist because of that shift, and I think we’ll see more of them soon.

I’m curious how this setup will look in November 2027. Maybe half of these tools will be gone by then 😄

If you’re thinking about changing your setup, my advice is simple: don’t copy someone else’s setup all at once. Pick one tool that solves a problem you actually have, use it for a couple of weeks, and keep it only if it sticks.

And whatever you end up with, keep your config files in a dotfiles repo. Mine are managed with GNU Stow, so setting them up again on a new machine only takes a few minutes. I wrote about it in A Simple Guide to Organizing Your Dotfiles.

I hope my writing here is useful. Thank you for reading 👋

Found this useful?

Give it a clap, or share it with someone who'd enjoy it too.

Comments