How This Started
This started as one of those harmless weekend ideas.
I was looking at my Ubuntu machine and thinking: “Can I make this feel a bit more like the setup I enjoy on my Mac?”
Not a giant desktop transformation. Not a serious productivity manifesto. Just
small things: a nicer terminal, a smarter prompt, better cd, better ls, a
few Kubernetes shortcuts, and maybe a terminal that did not look like it was
angry at me.
The first stop was Ghostty. I had used iTerm before, and Ghostty felt like a nice modern terminal to try. Then came Starship for the prompt. Then zoxide, fzf, eza, bat, fd, ripgrep, kubectl aliases, k9s, tmux, jq, yq…
And of course, after adding all this manually, the obvious thought appeared:
This is nice. But am I going to remember how I did all of this next time?
Probably not.
So the weekend experiment became a small installable project.
Here is the tiny demo I made for it:
The Problem With Personal Dotfiles
I like dotfiles. I also fear dotfiles.
They are powerful, but they are usually very personal. A random dotfiles repo can contain years of tiny assumptions:
- paths that only exist on one machine
- aliases that shadow normal commands
- shell history decisions
- random functions copied from somewhere
- config files that made sense three laptops ago
That is fine for the owner, but a little scary when you want to reuse the setup on a fresh machine.
So I wanted something smaller and more explicit:
- install the tools with Homebrew
- apply only the managed config files
- back up existing files first
- provide
doctor,backup, anduninstall - keep the shell config readable
- make it work on Linux and macOS
Nothing magical. Just boring enough to trust.
What The Setup Includes
The project now sets up a terminal workflow around:
- Ghostty config
- zsh
- Starship prompt
- zoxide
- fzf
- eza
- bat
- fd
- ripgrep
- jq
- yq
- kubectl aliases
- k9s
- tmux
The install flow looks like this:
brew install mathewjustin/pro-terminal/pro-terminal-setup
pro-terminal-setup install
terminal-intro
terminal-intro is a tiny guide that explains the commands after installation.
I added it because it is very easy to install ten nice tools and then forget
what five of them do.
The Kubernetes Bits
Since I use Kubernetes often, I added the small shortcuts I actually reach for:
k get pods
kg deployments
kd pod my-pod
kl my-pod
kns default
k9
k9a
The kns helper sets the namespace on the current Kubernetes context:
kns default
Tiny thing, but it removes a lot of repetitive typing.
The Safety Bits
The part I cared about most was not the prompt theme. It was reversibility.
The installer backs up managed files before replacing them. It also has:
pro-terminal-setup doctor
pro-terminal-setup backup
pro-terminal-setup uninstall
I also added a Docker smoke test so the Homebrew install path can be tested in a clean-ish environment.
This is still a personal setup, but I wanted it to behave less like a mysterious dotfiles dump and more like a small tool.
What I Learned
This was a funny reminder that tooling does not have to start as a product idea. Sometimes it starts with:
My terminal is too white and I do not like it.
Then you fix one thing. Then another. Then you package it because future-you is not as reliable as present-you thinks.
Also, Homebrew taps are surprisingly nice for this kind of thing. Once the tap is set up, installing a personal developer workflow becomes very simple.
The Repo
The project is here:
https://github.com/mathewjustin/pro-terminal-setup
It is not meant to be the perfect terminal setup for everyone. It is just a small, portable, Kubernetes-friendly terminal setup that I can install on a fresh machine without re-learning my own weekend decisions.
And honestly, that is already a win.