Very often I'm asked how I customized my Windows Terminal. This repo will walk you through step-by-step how to make your terminal look like the one I use. Fisrt of all, let's have look at my Windows Terminal.
Desclaimer: Windows Powershell (legacy version) support will be dropped soon. It's better to go with PowerShell Core
Now, let's start customizing the terminal. First things first , let's go through the prerequisites.
- Windows PowerShell or PowerShell Core
- Windows Terminal
- CascadiaCode
- Dependencies
- Git
- DotFetch or DotFetch.NET (Recommended: DotFetch)
Windows PowerShell legacy version comes built in with Windows. You can download the latest version of PowerShell Core from here. I strongly recommend using PowerShell Core.
Definitely if you haven't installed Windows Terminal yet, install it from Microsoft Store. Thats the must thing you need to do.
Download the CascadiaCode font latest version and install it on your computer. This should be very straight forward. Using other fonts might create gibberish on the terminal and break the design , probably you won't get all those nice glyphs.
If you want to have colorful themes in your terminal, you need to install some dependencies. Install these dependencies listed below.
Install below dependencies.
-
If you don't have Winget or Chocolatey installed on your system , get them. Now run
winget install JanDeDobbeleer.OhMyPosh
orchoco install oh-my-posh
from terminal and wait for the OMP V3 installation to complete. -
Install
PSReadLine
from here -
Install
Terminal-Icons
from here -
Install
z
from here
Using the latest version of dependencies is strongly recommended. With Windows PowerShell (legacy version) Sometimes, you might get some error while installing those modules. In that case, you can install them manually. Those modules are usually located in C:\Program Files\WindowsPowerShell\Modules
.
Download the Git for Windows and install and configure it on your system properly. You can check out this video to see how to install and configure Git properly on Windows.
Make a folder named Workspace
in your D:\
Drive.
Head over to DotFetch or DotFetch.NET repo and go through the README , and follow the instructions to install it properly on your system. I recommend using DotFetch for the instructions I wrote here.
After opening profile by notepad $profile
on terminal and Enter , open this PSCore_profile.ps1 file , copy everything and paste in your PowerShell profile. This is the configuration I recommend. You will get intellisense , auto-completion , nice keybindings like Ctrl+Shift+B
for running commands like dotnet build
from terminal and much more. Below animated gif is a sneak peak actually what you are going to have.
Auto-Completion , Intellisense in Terminal.
This kind of Auto-Completion , Intellisense is can smoothly be implemented for PowerShell Core. This feature also works with Windows PowerShell , but you have to download and configure PSReadLine
module latest version properly since it has some compatibility issues with Windows PowerShell (legacy version).
- Hit
Windows+R
to open the run command. - Paste
%USERPROFILE%\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState
and hit enter. This will bring up a file explorer. - Now download the
settings.json
file from here and paste it in the file explorer.
-
To see the list of available themes , run
Get-PoshThemes
on terminal. -
To customize color scheme of your favourite theme , navigate to
%USERPROFILE%\AppData\Local\Programs\oh-my-posh\themes
directory for OMP v3. -
Open the theme file you want to customize in your preferred code editor and modify the color scheme. Make sure to save the changes you made.
Those who wants to customize the default color scheme of posh themes , might be interested to have look at how it is done. I've modified two of them & here it is.
-
Check out modified iterm2 theme (
iterm2.omp.json
) file here. -
Check out modified powerlevel10k-rainbow theme (
powerlevel10k_rainbow.omp.json
) file here.
Once you are done , re-launch your Windows Terminal and you should be good to go.