Level Up Your Terminal
Step-by-step guide to setting up a fast, minimal, and IDE-like terminal using Zsh, Oh My Zsh plugins, and the Starship prompt.
Anirban Das Joy

We'll build a practical terminal using Zsh (smarter than Bash), Oh My Zsh (plugins only, no heavy themes), and Starship prompt (fast, minimal, and written in Rust).
This setup gives you: - Fast startup - Clean and minimal prompt (directory + git info) - Command autosuggestions - Syntax highlighting - IDE-like terminal experience - Perfect for daily use, scripting, and screen recording
What you'll learn in this blog: - Why Zsh is better than Bash for daily work - How to use Oh My Zsh correctly (plugins only) - How to install and configure Starship prompt - Fix common issues like broken icons using Nerd Fonts - How to keep your terminal minimal and fast
⚠️ Important: Commands are provided below. Pause and follow slowly if needed. It is recommended to create a Timeshift backup before making any system changes.
STEP 0: Update System & Install Requirements
sudo apt update
sudo apt install git curl -ySTEP 1: Install Zsh
sudo apt install zsh -y
zsh --version
chsh -s $(which zsh)After running these commands, log out and log back in. This is important — Zsh won't become your default shell until you do.
STEP 2: Install Oh My Zsh (Plugins Only)
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"We are NOT using Oh My Zsh themes. Starship will handle the prompt entirely. Oh My Zsh is only here for its plugin ecosystem.
STEP 3: Install Zsh Plugins Manually
Install zsh-autosuggestions — gives you fish-like command suggestions as you type.
Using HTTPS:
git clone https://github.com/zsh-users/zsh-autosuggestions.git $HOME/.oh-my-zsh/custom/plugins/zsh-autosuggestionsUsing SSH:
git clone git@github.com:zsh-users/zsh-autosuggestions.git $HOME/.oh-my-zsh/custom/plugins/zsh-autosuggestionsInstall zsh-syntax-highlighting — highlights valid commands in green and invalid ones in red, right as you type.
Using HTTPS:
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $HOME/.oh-my-zsh/custom/plugins/zsh-syntax-highlightingUsing SSH:
git clone git@github.com:zsh-users/zsh-syntax-highlighting.git $HOME/.oh-my-zsh/custom/plugins/zsh-syntax-highlightingSTEP 4: Configure Oh My Zsh (Minimal Setup)
Open your Zsh config file:
nano ~/.zshrcAfter opening the file, save and exit nano when done: - Press Ctrl + O to save - Press Enter to confirm the filename - Press Ctrl + X to exit
Find the ZSH_THEME line and disable it by setting it to empty. This lets Starship take over the prompt:
ZSH_THEME=""Find the plugins line and update it like this. Note: zsh-syntax-highlighting must always be last:
plugins=(
git
zsh-autosuggestions
zsh-syntax-highlighting
)
# Load NVM (if Node installed via NVM)
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion"
# Ensure system-wide node/npm/other global binaries are in PATH
export PATH=$PATH:/usr/local/bin:/usr/bin:/bin:/snap/bin:$HOME/.local/bin
STEP 5: Install Starship Prompt
curl -sS https://starship.rs/install.sh | shNow add Starship initialization at the very bottom of your ~/.zshrc file:
eval "$(starship init zsh)"Apply the changes:
source ~/.zshrcSTEP 6: Install Nerd Font (IMPORTANT)
Without a Nerd Font, all the icons in the prompt will appear as broken boxes or question marks. You must install one and set it in your terminal preferences. Recommended fonts: - JetBrainsMono Nerd Font - FiraCode Nerd Font - Hack Nerd Font Download from: https://www.nerdfonts.com/font-downloads After downloading and installing the font: 1. Open your terminal preferences or settings 2. Change the font to your chosen Nerd Font 3. Restart the terminal
STEP 7: Create Starship Config
Create the config directory and file:
mkdir -p ~/.config
nano ~/.config/starship.tomlPaste the config below. Once done, save and exit nano: - Press Ctrl + O to save - Press Enter to confirm the filename - Press Ctrl + X to exit
This gives you a clean Catppuccin Macchiato themed prompt with username, directory, git branch, git status, and command duration:
"$schema" = 'https://starship.rs/config-schema.json'
add_newline = false
format = "[█](surface0)[ ](bg:surface0 fg:text)$username[](bg:blue fg:surface0)$directory[](fg:blue bg:green)$git_branch$git_status[](fg:green)$cmd_duration "
right_format = ""
palette = 'catppuccin_macchiato'
[palettes.catppuccin_macchiato]
rosewater = "#f4dbd6"
flamingo = "#f0c6c6"
pink = "#f5bde6"
mauve = "#c6a0f6"
red = "#ed8796"
maroon = "#ee99a0"
peach = "#f5a97f"
yellow = "#eed49f"
green = "#a6da95"
teal = "#8bd5ca"
sky = "#91d7e3"
sapphire = "#7dc4e4"
blue = "#8aadf4"
lavender = "#b7bdf8"
text = "#cad3f5"
subtext1 = "#b8c0e0"
subtext0 = "#a5adcb"
overlay2 = "#939ab7"
overlay1 = "#8087a2"
overlay0 = "#6e738d"
surface2 = "#5b6078"
surface1 = "#494d64"
surface0 = "#363a4f"
base = "#24273a"
mantle = "#1e2030"
crust = "#181926"
[username]
show_always = true
style_user = "bg:surface0 fg:text"
style_root = "bg:surface0 fg:text"
format = '[ $user ]($style)'
[directory]
style = "fg:mantle bg:blue"
format = "[ $path ]($style)"
truncation_length = 10
truncation_symbol = "…/"
truncate_to_repo = false
[git_branch]
symbol = ""
style = "bg:teal"
format = '[[ $symbol $branch ](fg:base bg:green)]($style)'
[git_status]
style = "bg:teal"
format = '[[($all_status$ahead_behind )](fg:base bg:green)]($style)'
[cmd_duration]
min_time = 2_000
style = "fg:yellow"
format = '[ $duration]($style)'
[status]
disabled = true
[kubernetes]
disabled = true
[time]
disabled = trueYour terminal is now clean, fast, and IDE-like. Every command that takes more than 2 seconds will automatically show how long it took — right in the prompt.