Dino Lindlau

how to setup series — part 1: basic terminal config

in this series I want to show how I do things on my computer for my work life and my overall digital being. i’m currently using an m5 macbook pro for work and therefore use macos. i’m happy to be working with a unix-like system as my daily machine at work.

basic config + addons

the first point i want to start is my zsh config. zshell is the default one for macos and i was never missing a feature that only a different shell was able to offer, so I never really thought about switching. but the plain shell could be upgraded really easily with some little add-ons.

first i want to configure zsh itself, just expand the history and optimize search

~/.zshrc
HISTSIZE=50000               # Lines kept in memory per session (macOS default: 2000)
SAVEHIST=50000               # Lines saved to ~/.zsh_history (macOS default: 1000)
setopt HIST_IGNORE_ALL_DUPS  # Remove older duplicate when a command is repeated (default: off)
setopt HIST_FIND_NO_DUPS     # Skip duplicates when searching history (default: off)
setopt HIST_REDUCE_BLANKS    # Strip superfluous spaces before saving (default: off)
setopt SHARE_HISTORY        # Write and share history immediately across open tabs (default: off)

then I add addons to customize my prompt, improve how I’m able to search the history, and add syntax highlighting. most of them can be installed via homebrew (and fzf-tab cloned as a lightweight git repo):

Terminal
brew install jandedobbeleer/oh-my-posh/oh-my-posh zsh-completions fzf direnv zoxide zsh-autosuggestions zsh-syntax-highlighting
git clone https://github.com/Aloxaf/fzf-tab ~/.config/zsh/plugins/fzf-tab

here is what each addon does and the exact order they need to be loaded in ~/.zshrc:

the examples below use my own oh-my-posh theme and Ghostty colors: a blue folder name, a green git branch, and a cyan prompt on the next line. i’m using MesloLGM Nerd Font Mono for the icons. these are small illustrations of each addon in use; most change how the shell behaves while the prompt stays the same.

now we have a set up terminal :)