# Setting Up Windows Terminal for a Productive Workflow

A well-configured terminal is the heart of a developer's productivity. Here is my personal guide to transforming the standard Windows Terminal into a high-performance environment using PowerShell Core and modern CLI tools.

### 1\. Prerequisites

First, ensure you have the latest versions of the essential components installed:

* **Windows Terminal** (available via Microsoft Store or GitHub).
    
* **PowerShell Core (pwsh)**: The cross-platform version of PowerShell is faster and more feature-rich than the built-in Windows PowerShell.
    

### 2\. Profile Configuration

Organize your profiles in the Windows Terminal settings (`Settings > Startup`).

* **Set Default Profile:** Set PowerShell Core as your default.
    
* **Ordering:** Place your most-used environments at the top. For instance, I keep **PowerShell Core** first and my **WSL distribution** (openSUSE Tumbleweed) second. This allows for quick access via `Ctrl+Shift+1`, `Ctrl+Shift+2`, etc.
    

### 3\. Typography and Nerd Fonts

To render icons and glyphs correctly in the terminal, you need a **Nerd Font** (patched fonts containing extra symbols).

1. Download a font from [Nerd Fonts](https://www.nerdfonts.com/). My personal favorites are **Cascadia Code** and **JetBrains Mono**.
    
2. Install the font and set it in Windows Terminal: `Settings > Profiles > PowerShell > Appearance > Font face`.
    

---

### 4\. Essential PowerShell Plugins

Run these commands in PowerShell Core to install the core productivity stack:

**a) Oh-My-Posh** (Theming engine)

```powershell
winget install JanDeDobbeleer.OhMyPosh
```

**b) Posh-Git** (Git status in your prompt)

```powershell
Install-Module posh-git -Confirm:$False -Force
```

**c) Terminal-Icons** (Adds icons to `ls` / `dir` outputs)

```powershell
Install-Module Terminal-Icons -Confirm:$False -Force
```

**d) PSFzf** (Fuzzy search for files and history)

```powershell
winget install junegunn.fzf
Install-Module PSFzf -Confirm:$False -Force
```

**e) Zoxide** (A smarter `cd` command)

```powershell
winget install ajeetdsouza.zoxide
```

### 5\. Configuring Oh-My-Posh

Initialize Oh-My-Posh to see available themes:

```powershell
oh-my-posh init pwsh | Invoke-Expression
Get-PoshThemes
```

You can choose from dozens of built-in styles. Personally, I use a custom modified version of the **"hotstick.minimal"** theme.

### 6\. Finalizing Your Profile Script

The PowerShell profile is a script that runs every time you start the terminal. Open it by typing:

```powershell
notepad $PROFILE
```

Paste your configuration into this file. You can use [my reference profile here](https://pastebin.com/raw/5GkJ1Rdp) as a template. Make sure to update the theme initialization line:

```powershell
# Example theme initialization
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH/mytheme.omp.json" | Invoke-Expression

# Add your custom aliases here
Set-Alias v nvim
```

### Key Benefits of This Setup

By following these steps, your terminal will support:

* **Rich Visuals:** A prompt showing Git branch status and execution time.
    
* **Visual File Navigation:** Colorful icons in file listings.
    
* **Intelligence:** Suggestions based on your command history.
    
* **Speed:** Fuzzy search for files (`Ctrl+F`) and history (`Ctrl+R`).
    
* **Efficiency:** Smart directory jumping with the `z` command and custom aliases.
    

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1767191125195/3dcb1613-1ed3-4b3f-a939-0492f362c1ef.gif align="center")
