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.
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
-
Alternative Way (Via Chocolately)
-
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.
- 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"
},
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)
-
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 )
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 ->
if (!(Test-Path -Path $PROFILE)) { New-Item -ItemType File -Path ROFILE -Force }
- Now go ahead and add the following code to your powershell profile -
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.
$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 -
$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 .
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)
Top comments (54)
It's modern in the sense that it's relatively recent. It's not particularly modern in terms of features.
But as for fast... try to
cat
a long file in Windows Terminal or run a bunch ofdir
commands in a loop, and then try the same thing on a Mac or Linux machine. I tried a large file the other day, something that took 0.6 seconds on a Mac took 26 seconds on Windows. 26 seconds! That's not just slow, it's glacial. it's about 50 times slower. You can watch the screen scroll up like you're looking at adir /w
on a PC1512. It's not down to the individual machine's specs, or whether it's running WSL or anything, this is down to the way Terminal works.I'm sure it'll get better. But it's definitely not fast.
I've opened a couple of large files in Windows Terminal and Vim. No performance issues on typing or scrolling whatsoever. iTerm2 on my MacBook Pro might be a bit faster.
Real benchmarks would be helpful here. Of course, the Terminal being open-source any lagging issues would be easy to verify.
Agree with you ( that's the description microsoft gave ).
Let's hope it gets better.
Hey, this is really cool!
I have set it up, and it was working fine. However, there seems to be some issue with the PSWRITECOLOR module. If I add too many lines that haven't returned anything, the banner gets distorted:
Normal:
Too many lines:
Is there any way to fix this? Would really appreciate some help.
Thanks in advance.
This is wierd. I'm not sure about it either.
I will tag you if I find the fix👍
It appears to be a problem with the newline character. That's what is compressing the lines above it. I disabled both of the extensions, and kept typing the command
echo "`n"
and the above characters got compressed, but this didn't happen when I didn't set a newline. Interesting...
I've finally figured it out. Just replace
Set-Newline
or any newline characters withWrite-Color -Text " "
. It works perfectly.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?
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)
'
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.
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
That's paradox json screenshot
dev-to-uploads.s3.amazonaws.com/up...
I am having the same error please share if you get the solution
Hello Anup, thanks for this post.
I have some trouble like on the screenshot here.
Could you telle me what's wrong ?
I precise, I already installed fonts asked in prerequisites.
dev-to-uploads.s3.amazonaws.com/i/...
Did you add this in your settings.json?
I'm pretty sure ... not :D
Thanks, I forgot this.
It works now ! ;-)
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...
I do get the weird symbols on my themes. And also at the banner part I don't know where to put that in. You say $psenvmodule path is where I find it. But I don't known what that means and also you say in another comment it's in powershell profile. But I do the ctrl + , and I don't find anything of the sort.
So everything works, except I need to set theme every time I log in. I get strange symbols, I tried doing "git clone github.com/microsoft/cascadia-code..." in the powershell but nothing seems to come into effect, maybe I need to restard?
also I don't know what to do with the banner, where to find the file how to set it up.
If you want to install the font you have to download the first zip on this page and open it github.com/microsoft/cascadia-code... then open ttf folder, double click on CascadiaCodePL and click install.
The banner part is a bit confusing yep, my profile is at "C:\Users\YOURNAME\Documents\WindowsPowerShell"
I easily created it by typing "notepad $PROFILE" on Windows Powershell. Then I pasted OP's profile (pastebin.com/JAX3Ce23) inside it.
Thanks very much for your effort. I prefer something like Cmder
Now just below your $psenvmodule path add the following lines to display your customized banner.
where is the location?
In powershell profile
got it, thank you
Here is link to my ps profile - pastebin.com/JAX3Ce23
FYI some of these commands are no longer supported, for example
Set-Theme
is deprecatedHow can get rid of this weird message?
dev-to-uploads.s3.amazonaws.com/i/...
Make sure in your settings.json ...you have -noLogo flag.
"commandline": "powershell.exe -NoLogo -NoExit",
Where are the settings.json located.? I can't find this, BTW I'm using
PowerShell 7.1.0
notWindowsPowerShell
I'm talking about windows terminal settings, which can be accessed from the terminal dropdown.
yah.! it's gone from
Windows Terminal
😊 but still, have onPowerShell
andWindowsPowerShell
😢The message will be gone in powershell.
Some comments may only be visible to logged-in visitors. Sign in to view all comments.