Installing and Configuring Zsh + Oh My Zsh with Agnoster Theme (Ubuntu)

A modern terminal setup can significantly improve your productivity and make your development workflow more enjoyable.

In this tutorial, you’ll learn how to:

  • Install Zsh
  • Install Oh My Zsh
  • Enable the agnoster theme
  • Install and configure MesloLGLDZ Nerd Font for proper rendering

🚀 1. What is Zsh and Oh My Zsh?

Zsh (Z Shell) is a powerful alternative to Bash (the default shell in Ubuntu).

It provides:

  • Smarter tab completion
  • Better file navigation
  • Advanced globbing (**/*.txt)
  • Customization options

Oh My Zsh is a framework that enhances Zsh with:

  • Themes (like agnoster)
  • Plugins (Git, Docker, etc.)
  • Preconfigured shortcuts and productivity tools

📦 2. Install Zsh

Update your system and install Zsh:

sudo apt update
sudo apt install zsh -y

Verify installation:

zsh --version

🔄 3. Set Zsh as Default Shell

Run:

chsh -s $(which zsh)

Log out and log back in to apply the change.

💡 If you see the zsh-newuser-install screen, press q to skip it. Oh My Zsh will handle configuration automatically.


⚡ 4. Install Oh My Zsh

Install using curl:

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Or using wget:

sh -c "$(wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"

After installation, your terminal will automatically switch to Zsh.


🎨 5. Enable the Agnoster Theme

Open your Zsh config file:

nano ~/.zshrc

Find this line:

ZSH_THEME="robbyrussell"

Change it to:

ZSH_THEME="agnoster"

Save and exit (CTRL + X, then Y, then Enter).

Apply changes:

source ~/.zshrc

⚠️ At this point, the theme may look broken — that’s normal!
You need a Nerd Font for proper icons.


🔤 6. Install MesloLGLDZ Nerd Font

The agnoster theme requires a Powerline/Nerd Font to display symbols correctly.

Option A (Recommended – Manual Install)

Download the font from:
👉 https://github.com/romkatv/powerlevel10k-media

Or directly via terminal:

mkdir -p ~/.local/share/fonts
cd ~/.local/share/fonts

wget https://github.com/romkatv/powerlevel10k-media/raw/refs/heads/master/MesloLGS%20NF%20Regular.ttf

Update font cache:

fc-cache -fv

🖥️ 7. Configure Terminal Font

Now you must tell your terminal to use the new font.

In Ubuntu Terminal (GNOME Terminal):

  1. Open Terminal
  2. Go to Preferences
  3. Select your profile
  4. Enable Custom font
  5. Choose:

👉 MesloLGLDZ Nerd Font


✅ 8. Final Result

Restart your terminal.

You should now see:

  • Clean segments
  • Git branch indicators
  • Powerline-style arrows
  • Proper symbols (no weird boxes)

⚙️ 9. (Optional) Enable Useful Plugins

Edit your config:

nano ~/.zshrc

Find:

plugins=(git)

You can expand it:

plugins=(git ubuntu)

Apply:

source ~/.zshrc

💡 10. Useful Zsh Features

Navigate without cd

Documents

Recursive file search

ls **/*.txt

Smarter tab completion

Press Tab multiple times to cycle through options.


🎉 Conclusion

You now have a fully customized terminal with:

  • Zsh as your default shell
  • Oh My Zsh for productivity
  • Agnoster theme for a clean UI
  • Nerd Font for proper rendering

This setup is widely used by developers and will make your daily terminal usage faster and more enjoyable.