DEV Community

Cover image for Beautify your Windows Terminal 🦄
Anup Aglawe
Anup Aglawe

Posted on • Updated 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"
        }
    ],
Enter fullscreen mode Exit fullscreen mode

More themes at - atomcorp.github.io/themes/

That's pretty much for the windows Terminal Settings , lets move to add some cool plugins 🔥.


PowerLine Setup ⚡

Alt Text

Alt Text

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 font. (Otherwise you might some gibberish on your terminal )
  • Git for windows
  • Install Posh-git and Oh-my-posh ( use powershell )
 Install-Module posh-git -Scope CurrentUser
Install-Module oh-my-posh -Scope CurrentUser
Enter fullscreen mode Exit fullscreen mode

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 ->
    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 -
Import-Module posh-git
Import-Module oh-my-posh
Set-Theme Paradox
Enter fullscreen mode Exit fullscreen mode

More themes at - 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.

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

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


Modifying Oh-my-posh theme ( 🦄🔥🚀 Emojis )

Emojis


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 -

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

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


Adding custom banner to your Powershell 🏳️‍🌈

Alt Text
This is quite tedious task if you want to add complex images in the banner.
( There is easier way Neofetch for windows, 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/.
    • 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 .
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 " "
Enter fullscreen mode Exit fullscreen mode

(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

Edit 2. - Background Image source - 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


Credits

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

Collapse
 
anupa profile image
Anup Aglawe

As far as I know it is not possible for cmd, but should be much easier for wsl, and there are many articles for the same.

Collapse
 
shekhsaifuddin007 profile image
Shekh Saifuddin • Edited

How can get rid of this weird message?

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

Collapse
 
anupa profile image
Anup Aglawe

Make sure in your settings.json ...you have -noLogo flag.
"commandline": "powershell.exe -NoLogo -NoExit",

Collapse
 
shekhsaifuddin007 profile image
Shekh Saifuddin • Edited

Where are the settings.json located.? I can't find this, BTW I'm using PowerShell 7.1.0
not WindowsPowerShell

Thread Thread
 
anupa profile image
Anup Aglawe

I'm talking about windows terminal settings, which can be accessed from the terminal dropdown.

Thread Thread
 
shekhsaifuddin007 profile image
Shekh Saifuddin

yah.! it's gone from Windows Terminal 😊 but still, have on PowerShell and WindowsPowerShell 😢

Thread Thread
 
malviez profile image
malviez • Edited
  1. Right click powershell shortcut
  2. Hit property
  3. Open shortcut tab
  4. Add " -nologo" at the end of target address

The message will be gone in powershell.

Collapse
 
alfdocimo profile image
Alfredo Narváez Docimo

This is so amazing, thank you thank you thank you!!! I thought the only way I could achieve a somewhat aesthetic terminal was using WSL and installing oh-my-zsh and whatnot. Massive thanks for real! 💙

Collapse
 
zakialfaridzi profile image
zakialfaridzi

Hi! love the article. But i was wondering how to change the emojis?

Collapse
 
anupa profile image
Anup Aglawe
$sl.PromptSymbols.StartSymbol = [char]::ConvertFromUtf32(0x01F984) + [char]::ConvertFromUtf32(0x0001F525) + ' '
$sl.PromptSymbols.PromptIndicator = [char]::ConvertFromUtf32(0x01F680) +[char]::ConvertFromUtf32(0x276F)
Enter fullscreen mode Exit fullscreen mode

The hexcodes (0x...) you see in this snippet represents emojis. Just google hex code of emojis you like and replace the above code.

Collapse
 
zakialfaridzi profile image
zakialfaridzi

ohh okay, thanks Anup!

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