This guide will walk you through transforming a default terminal into a highly customized, visually appealing, and productive environment using Oh My Posh, Nerd Fonts, and intelligent file listing tools.

It covers both local Windows PowerShell and remote Linux (Bash) environments accessed via SSH.

Part 1: Local Windows PowerShell Setup

1. Install Oh My Posh

Oh My Posh is the engine that renders the beautiful prompt, including Git status and execution times.

  1. Open Windows Terminal.

  2. Run the following command:

    winget install JanDeDobbeleer.OhMyPosh -s winget
    
    
  3. Restart Windows Terminal.

2. Download and Install a Nerd Font

Standard fonts do not support the special icons (Git branches, folders, etc.) used by Oh My Posh. You must install a “Nerd Font”.

  1. Download the Meslo.zip Nerd Font from the official GitHub repository.

  2. Extract the .zip file.

  3. Select all the .ttf files, right-click them, and select Show more options Install for all users. (Note: “Install for all users” is crucial for Windows Terminal to recognize the font).

3. Apply the Font in Windows Terminal

  1. Open Windows Terminal Settings (Ctrl + ,).

  2. Go to Profiles Windows PowerShell Appearance.

  3. Change the Font face to MesloLGM Nerd Font.

  4. Click Save.

4. Install PowerShell Enhancements

To get Git tab-autocompletion and colored file/folder icons when typing ls, install these two modules:

Install-Module posh-git -Scope CurrentUser -Force
Install-Module -Name Terminal-Icons -Repository PSGallery -Force

5. Configure Your PowerShell Profile

You need to tell PowerShell to load these tools and your chosen theme every time it opens.

  1. Open your profile in Notepad:

    notepad $PROFILE
    
    
  2. Paste the following three lines. (Ensure the Oh My Posh command stays on a single, continuous line!)

    Import-Module posh-git
    Import-Module -Name Terminal-Icons
    oh-my-posh init pwsh --config "[https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/jandedobbeleer.omp.json](https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/jandedobbeleer.omp.json)" | Invoke-Expression
    
    
  3. Save, close Notepad, and reload your terminal (. $PROFILE).

Tip: When you see a grey predictive text suggestion while typing, press the Right Arrow to accept the whole line, or Ctrl + Right Arrow to accept it word-by-word.

Part 2: Remote Linux Machine Setup (SSH)

When you SSH into a remote Linux server, it uses its own local shell (bash). Because your local Windows Terminal is still rendering the screen, your Nerd Font will work, but you need to install Oh My Posh and a modern ls alternative (eza) on the remote machine.

1. Install Oh My Posh for Linux

Connect to your remote machine via SSH and run:

curl -s [https://ohmyposh.dev/install.sh](https://ohmyposh.dev/install.sh) | bash -s

2. Configure your Bash Profile

  1. Open your bash configuration file:

    nano ~/.bashrc
    
    
  2. Scroll to the very bottom and add these two lines. The first line fixes the $PATH dynamically using $HOME so Linux knows where Oh My Posh is installed, and the second initializes your theme:

    export PATH=$PATH:$HOME/.local/bin
    eval "$(oh-my-posh init bash --config [https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/jandedobbeleer.omp.json](https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/jandedobbeleer.omp.json))"
    
    
  3. Save (Ctrl + O, Enter) and exit (Ctrl + X).

3. Install eza (for colored ls icons)

Linux doesn’t support the Windows Terminal-Icons module, so we install eza, a modern replacement for ls.

  1. Install dependencies and add the repository:

    sudo apt install -y gpg
    sudo mkdir -p /etc/apt/keyrings
    wget -qO- [https://raw.githubusercontent.com/eza-community/eza/main/deb.asc](https://raw.githubusercontent.com/eza-community/eza/main/deb.asc) | sudo gpg --dearmor -o /etc/apt/keyrings/gierens.gpg
    echo "deb [signed-by=/etc/apt/keyrings/gierens.gpg] [http://apt.fury.io/eza/](http://apt.fury.io/eza/) /" | sudo tee /etc/apt/sources.list.d/gierens.list
    
    
  2. Install eza:

    sudo apt update
    sudo apt install -y eza
    
    

4. Alias ls to eza

  1. Open your bash profile again:

    nano ~/.bashrc
    
    
  2. Add this line at the very bottom so typing ls automatically uses eza with icons:

    alias ls='eza --icons'
    
    
  3. Save and exit.

5. Apply Linux Changes

Reload your bash environment:

source ~/.bashrc

Your remote Linux terminal now perfectly matches your local Windows terminal experience!