DEV Community

Cover image for Beautify your Windows Terminal ๐Ÿฆ„
Anup Aglawe
Anup Aglawe

Posted on • Edited on

Windows Terminal Themes Beautify your Windows Terminal ๐Ÿฆ„

Edit - โš ๏ธ With the newer version of oh-my-posh, and significant changes from V2, this article is outdated. Note that this will still work perfectly fine with V2 of oh-my-posh.


The Windows Terminal is a modern, fast, efficient, powerful, and productive terminal application for users of command-line tools and shells like Command Prompt, PowerShell, and WSL.


Terminal

Lets start with windows Terminal installation -

  • Install the Windows Terminal from the Microsoft Store. This allows you to always be on the latest version when we release new builds with automatic upgrades.
    • Alternative Way (Via Chocolately) - choco install microsoft-windows-terminal

Next Step is to modify Windows Terminal settings.

Fire up your installed windows terminal, and open up its settings, which will open settings.json in your default editor.

  1. Under profiles list update the powershell profile to -


 {
       // Make changes here to the powershell.exe profile.
       "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
       "name": "Linnea",
       "commandline": "powershell.exe -NoLogo -NoExit",
       "hidden": false,
       "colorScheme": "Blue Matrix",
       "fontFace": "Cascadia Code PL",
       "fontSize": 10,
       "icon": "xxxxxxxxxxxxxxxxxxxxxx",
       "backgroundImage": "xxxxxxxxxxxxxxxxxxx",
       "backgroundImageOpacity": 0.2,
       "acrylicOpacity": 0.8,
       "useAcrylic": true,
       "startingDirectory": "Q:\\Development"
 },


Enter fullscreen mode Exit fullscreen mode

Properties - name-[ Appears as title in top bar ]
acrylicOpacity-[ its just the opacity of window ]
useAcrylic-[ to use acrylicOpacity it must be true]
icon-[ appears as favicon to window ]

(Note 1- make sure to update icon and background image to your personal liking)
(Note 2- make sure to that your defaultProfile has the guid of your powershell)

  1. Next step is to update our schemes list -

    
    
     "schemes": [
        {
            "name": "Blue Matrix",
            "black": "#101116",
            "red": "#ff5680",
            "green": "#00ff9c",
            "yellow": "#fffc58",
            "blue": "#00b0ff",
            "purple": "#d57bff",
            "cyan": "#76c1ff",
            "white": "#c7c7c7",
            "brightBlack": "#686868",
            "brightRed": "#ff6e67",
            "brightGreen": "#5ffa68",
            "brightYellow": "#fffc67",
            "brightBlue": "#6871ff",
            "brightPurple": "#d682ec",
            "brightCyan": "#60fdff",
            "brightWhite": "#ffffff",
            "background": "#1d2342",
            "foreground": "#b8ffe1"
        }
    ],
    
More themes at - [atomcorp.github.io/themes/](https://atomcorp.github.io/themes/)

That's pretty much for the windows Terminal Settings , lets move to add some cool plugins ๐Ÿ”ฅ.

---

### PowerLine Setup โšก
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/73e98cxinv28jywdxrhb.png)

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/8uejzmvkxrwkxevxohk4.png)

Edit - โš ๏ธ With the newer version of oh-my-posh, and significant changes from V2. this article needs update. Note that this will still work perfectly fine with V2 of oh-my-posh.

 Prerequisites - 
 - Install [Cascadia code PL](https://github.com/microsoft/cascadia-code/releases) font. (Otherwise you might some gibberish on your terminal )
 - [Git](https://git-scm.com/downloads) for windows
 - Install Posh-git and Oh-my-posh  ( use powershell )
Enter fullscreen mode Exit fullscreen mode

Install-Module posh-git -Scope CurrentUser
Install-Module oh-my-posh -Scope CurrentUser

---

####  Customize your PowerShell prompt ๐Ÿ”จ
 - Open your PowerShell profile with `notepad $PROFILE` or the text editor of your choice. This is not your Windows Terminal profile. Your PowerShell profile is a script that runs every time PowerShell starts.
 -  If your powershell doesn't already have a profile, create one -> 
Enter fullscreen mode Exit fullscreen mode
if (!(Test-Path -Path $PROFILE)) { New-Item -ItemType File -Path ROFILE -Force }
Enter fullscreen mode Exit fullscreen mode
- Now go ahead and add the following code to your powershell profile -
Enter fullscreen mode Exit fullscreen mode

Import-Module posh-git
Import-Module oh-my-posh
Set-Theme Paradox

More themes at - [ oh-my-posh themes](https://github.com/JanDeDobbeleer/oh-my-posh#themes)

( โš ๏ธ  if your powershell gives module not found error ) add the following code with default module location, to the top of your Powershell Profile.
Enter fullscreen mode Exit fullscreen mode

$env:PSModulePath = $env:PSModulePath + "$([System.IO.Path]::PathSeparator)C:\Users\xxxx\Documents\WindowsPowerShell\Modules"

Still facing error - Visit [https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-7](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-7)


---
### Modifying Oh-my-posh theme ( ๐Ÿฆ„๐Ÿ”ฅ๐Ÿš€ Emojis )

![Emojis](https://dev-to-uploads.s3.amazonaws.com/i/eqttvii2l25877p2vytv.png)

---
Remember we set our default oh-my-posh theme to paradox, lets head over to customize it.

- Navigate to your PSmodules directory, then into oh-my-posh themes directory 
    - `Documents\WindowsPowerShell\Modules\oh-my-posh\2.0.412\Themes`

- Open Paradox file, scroll down to the bottom and update following lines -

Enter fullscreen mode Exit fullscreen mode

$sl.PromptSymbols.StartSymbol = [char]::ConvertFromUtf32(0x01F984) + [char]::ConvertFromUtf32(0x0001F525) + ' '
$sl.PromptSymbols.PromptIndicator = [char]::ConvertFromUtf32(0x01F680) +[char]::ConvertFromUtf32(0x276F)

*(This lines will add cool emojis just before your StartSymbol & PromptIndicator)*

---

### Adding custom banner to your Powershell ๐Ÿณ๏ธโ€๐ŸŒˆ

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/uwpi5z246kgy9ubu9i4a.png)
This is quite tedious task if you want to add complex images in the banner.
( There is easier way [Neofetch for windows](https://github.com/dylanaraps/neofetch), but it comes with its own lag overhead whenever you open your windows terminal )

- *Tedious but way less overhead* Method
    -  Change your powershell file to add your custom ascii art. 
    -  In my case, I changed my Profile Image to Ascii Art via [https://www.topster.net/ascii-generator/](https://www.topster.net/ascii-generator/).
    - Next problem is color support, by default powershell doesn't allow you to write multipler colored text on a single line.
    -  ( You could proceed without this ) If want the above function install Write color module.
    `Install-Module -Name PSWriteColor`
    - Now just below your $psenvmodule path add the following lines to display your customized banner .
Enter fullscreen mode Exit fullscreen mode

Write-Color -Text " /@ " -Color Cyan
Write-Color -Text " @(","@ " -Color Blue,Cyan
Write-Color -Text " @@/"," @* " -Color Blue, Cyan
Write-Color -Text " @#/"," @@* " -Color Blue, Cyan
Write-Color -Text " @@(/"," @@,, " -Color Blue, Cyan
Write-Color -Text " @%(/ @@","@@@@@@","@@@@ " -Color Blue, DarkCyan, Cyan
Write-Color -Text " @@#","#"," " -Color Blue, DarkCyan, Cyan
Write-Color -Text " @@##","#(((/","///",",,,,,@ " -Color Blue, DarkBlue, DarkCyan, Cyan
Write-Color -Text " @@%%#","##(((/","///
","****,,,,,,@ " -Color Blue, DarkBlue, DarkCyan, Cyan
Write-Color -Text "@@@@@W","@@@@@@","@@@@@@","@@@@@@@@@@@ " -Color Blue, DarkBlue, DarkCyan, Cyan
Write-Color -Text " "


*(Note - the number of colors you can choose from is somewhat limited: Black, DarkBlue, DarkGreen, DarkCyan, DarkRed, DarkMagenta, DarkYellow, Gray, DarkGray, Blue, Green, Cyan, Red, Magenta, Yellow, and White )*

Edit 1. - Your Powershell Profile should look like this - [ pastebin.com/JAX3Ce23](pastebin.com/JAX3Ce23)

Edit 2. - Background Image source - [facets.la](facets.la)

Edit 3. - With the new version of oh-my-posh, few commands (ex- set-theme ) have been depreciated. I'm planning to update the article with the specifics, till then use their documentation for updated syntax - [Repo Link](https://github.com/JanDeDobbeleer/oh-my-posh)


----

## Credits

- [Windows Terminal Community โค](https://github.com/microsoft/terminal) 
- [https://github.com/JanDeDobbeleer/oh-my-posh](https://github.com/JanDeDobbeleer/oh-my-posh)
- [https://github.com/dahlbyk/posh-git](https://github.com/dahlbyk/posh-git)
- [https://github.com/EvotecIT/PSWriteColor](https://github.com/EvotecIT/PSWriteColor)
- [https://github.com/atomcorp/themes](https://github.com/atomcorp/themes)
Enter fullscreen mode Exit fullscreen mode

Latest comments (54)

Collapse
 
hongducdev profile image
Nguyแป…n Hแป“ng ฤแปฉc

Is it possible to modify the Oh-my-posh theme in 2023?

Collapse
 
notblong profile image
Bao Long

Hi, for anyone have issue with "Set-Theme Paradox"
The term 'Set-Theme' is not recognized as a name of a cmdlet, function, script file, or executable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

see it here: github.com/microsoft/terminal/issu...

Collapse
 
gdariodh profile image
Gabriel Dรญaz

I love it the post but i couldn't set the emojis in the prompt, i have only themes :(

i have problem to set the paradox theme config emoji, because the file is a json and mark syntaxis error, is there someone that help me to set emoji in the prompt terminal?

Collapse
 
anupa profile image
Anup Aglawe • Edited

My guess would be that updated version of oh-my-posh is cause of the problem.
As someone reported, they have depreciated set-theme command in the latest version. You could read their docs for newer syntax - github.com/JanDeDobbeleer/oh-my-posh

Anyways, Were you able to locate and edit oh-my-posh theme configuration file to add emojis as start symbol?

Did you add the following lines in paradox theme file?
'
$sl.PromptSymbols.StartSymbol = [char]::ConvertFromUtf32(0x01F984) + [char]::ConvertFromUtf32(0x0001F525) + ' '
$sl.PromptSymbols.PromptIndicator = [char]::ConvertFromUtf32(0x01F680) +[char]::ConvertFromUtf32(0x276F)

'

Collapse
 
anupa profile image
Anup Aglawe

Looked at their documentation, transition from V2 to v3 of oh-my-posh is quite significant.

It would take some time for me to update the article.

Thread Thread
 
gdariodh profile image
Gabriel Dรญaz

i think same, i have the "3.147.0 oh-my-posh", i tried to follow lines in paradox theme file but the json gave me syntax error :(. Could be the file to set emojis have changed

Thread Thread
 
gdariodh profile image
Gabriel Dรญaz • Edited

That's paradox json screenshot

dev-to-uploads.s3.amazonaws.com/up...

Thread Thread
 
shivamchandra75 profile image
shivamchandra75

I am having the same error please share if you get the solution

Collapse
 
edarioq profile image
Edgar Quintero

FYI some of these commands are no longer supported, for example Set-Theme is deprecated

Collapse
 
kken94 profile image
Nicola Taddei

With new oh-my-posh version we need an article review :(.

PS: can you share your bg wallpaper? Thank you

Collapse
 
anupa profile image
Anup Aglawe

Sorry but I don't have enough time to rewrite the article.

Image source - facets.la

Collapse
 
snarkcorn profile image
Adarsh Nair

what-a-life-what-a-meme.lifes-a-me...

I'm getting this for some reason, any particular reason why?

Collapse
 
anupa profile image
Anup Aglawe

I guess ASCII art text is throwing error.
Test if there is still the same error if text I used in the post is used.
I recommend this tool -
topster.net/ascii-generator/

Collapse
 
barlerer profile image
Bar Lerer

How do I add emojis to Oh My Posh V3?
When I try to edit the theme, its a JSON file, and the lines you specified are not valid JSONs

Collapse
 
krrishdhaneja profile image
Krrish Dhaneja

can u share the pic in your terminal background?

Collapse
 
anupa profile image
Anup Aglawe • Edited

Check out this facets.la/. Some cool collection of images.

Collapse
 
sssinaaa profile image
vFlag

thank you so much

Collapse
 
danielagiorgio profile image
Daniela Giorgio • Edited

thank you! I love it :)
powershell

Some comments may only be visible to logged-in visitors. Sign in to view all comments.