If you're looking to customize your terminal and PowerShell experience, this guide will walk you through the process step by step. We'll be using a combination of different tools including Oh My Posh, Terminal-Icons, and PowerShell 7.
Note: This guide assumes you're using Windows 10.
The first step is to install the necessary software. Open PowerShell as an administrator and run the following commands:
winget install --id=Microsoft.WindowsTerminal -e
Install-Module posh-git -Scope CurrentUser
winget install nepnep.neofetch-win
winget install JanDeDobbeleer.OhMyPosh -s winget
Install-Module -Name PSReadLine -AllowPrerelease -Scope CurrentUser -Force -SkipPublisherCheck
Install-Module -Name Terminal-Icons -Repository PSGallery -Scope CurrentUser
These commands will install the Windows Terminal, posh-git, neofetch, Oh My Posh, PSReadLine, and Terminal-Icons.
To use custom fonts with Oh My Posh, you need a Nerd Font. You can choose any font you like from nerdfonts.com, but for this guide we'll use SpaceMono NF. You can install it automatically or manually:
To install the font trough Oh My Posh (automatic):
- Open an elevated console:
- Execute:
oh-my-posh font install SpaceMono
To install the font (manual way):
- Download the font from github.com/ryanoasis/nerd-fonts/releases/download/v2.1.0/SpaceMono.zip
- Extract the zip file.
- Right-click on each of the extracted .ttf files and select "Install" from the context menu.
Next, we need to set SpaceMono NF as our default font. Open the Windows Terminal and click on the down arrow next to the "+" icon and select "Settings". Scroll down to the "Global" section, find the "fontFace" setting, and change its value to "SpaceMono NF".
If you're a fan of Notepad++, you can set up a command-line alias to open files in it. To do this:
- Create a new file named
npp.bat
in your Windows root directory (usuallyC:\Windows
). - Open
npp.bat
in a text editor and add the following line:"C:\Program Files\Notepad++\notepad++.exe" %*
, make sure that the path of notepad++.exe corresponds accordingly - Save and close the file.
Now you can use in console npp file.txt
to open file.txt
in Notepad++.
Oh My Posh provides a host of themes that you can use to customize your terminal prompt. You can view all available themes by running Get-PoshThemes
.
For this guide, we'll be using Kudostoy0u's pwsh10k additional theme.
Download the theme from github.com/Kudostoy0u/pwsh10k and save it as pwsh10k.omp.json
in your user home directory (C:\Users\[your username]
).
Last step is to create a file with the configuration for your profile for all the goodies we just gather. To doing so:
- Create a new file named
Microsoft.PowerShell_profile.ps1
in your PowerShell user profile directory (C:\Users\[your username]\Documents\WindowsPowerShell\
). - Add the following contents to
Microsoft.PowerShell_profile.ps1
:
oh-my-posh --init --shell pwsh --config ~/pwsh10k.omp.json | Invoke-Expression
neofetch
function IsVirtualTerminalProcessingEnabled {
$MethodDefinitions = @'
[DllImport("kernel32.dll", SetLastError = true)]
public static extern IntPtr GetStdHandle(int nStdHandle);
[DllImport("kernel32.dll", SetLastError = true)]
public static extern bool GetConsoleMode(IntPtr hConsoleHandle, out uint lpMode);
'@
$Kernel32 = Add-Type -MemberDefinition $MethodDefinitions -Name 'Kernel32' -Namespace 'Win32' -PassThru
$hConsoleHandle = $Kernel32::GetStdHandle(-11) # STD_OUTPUT_HANDLE
$mode = 0
$Kernel32::GetConsoleMode($hConsoleHandle, [ref]$mode) >$null
if ($mode -band 0x0004) { # 0x0004 ENABLE_VIRTUAL_TERMINAL_PROCESSING
return $true
}
return $false
}
function CanUsePredictionSource {
return (! [System.Console]::IsOutputRedirected) -and (IsVirtualTerminalProcessingEnabled)
}
if (CanUsePredictionSource){
Import-Module -Name Terminal-Icons
Import-Module PSReadLine
Set-PSReadLineOption -PredictionViewStyle ListView -PredictionSource History -HistoryNoDuplicates
}
The function definition IsVirtualTerminalProcessingEnabled
, is a work around for avoiding the warning of PSReadLine and predictionsource.
This sets up the pwsh10k theme and displays a system information banner when you open PowerShell. It also adds some additional functionality to PowerShell's command line interface.
That's it! You should now have a customized terminal and PowerShell experience. If you run into any issues or want to learn more about Oh My Posh, Terminal-Icons, or PowerShell, check out their respective documentation on GitHub.
- https://github.com/JanDeDobbeleer/oh-my-posh2#installation
- https://github.com/devblackops/Terminal-Icons
- https://github.com/PowerShell/PSReadLine
- https://github.com/Kudostoy0u/pwsh10k
- PowerShell/PSReadLine#2046 (comment)
- https://gist.github.com/leodutra/a6cebe11db5414cdaedc6e75ad194a00
- Warning: plugin zsh-syntax-highlighting not found · Issue #7688 · ohmyzsh/ohmyzsh
- Your terminal can be much, much more productive
- https://gist.github.com/carlolars/7914d2606204001e798c812961c3ac88
- Cómo instalar las terminales zsh y oh-my-zsh en Windows 10
Some of you asked for my personal terminal visualisation settings, here you have. This is the settings.json
file of my own terminal. Just make sure your profiles, i.e., the different consoles you are using, have the correct path.
settings.json
{
"$help": "https://aka.ms/terminal-documentation",
"$schema": "https://aka.ms/terminal-profiles-schema",
"actions":
[
{
"command":
{
"action": "copy",
"singleLine": false
},
"keys": "ctrl+c"
},
{
"command": "paste",
"keys": "ctrl+v"
},
{
"command": "find",
"keys": "ctrl+shift+f"
},
{
"command":
{
"action": "splitPane",
"split": "auto",
"splitMode": "duplicate"
},
"keys": "alt+shift+d"
}
],
"copyFormatting": "none",
"copyOnSelect": true,
"defaultProfile": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
"disableAnimations": false,
"language": "en-US",
"profiles":
{
"defaults":
{
"font":
{
"face": "Hack Nerd Font Mono"
},
"opacity": 56,
"useAcrylic": true,
"useAtlasEngine": false
},
"list":
[
{
"commandline": "%SystemRoot%\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
"guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
"hidden": false,
"name": "Windows PowerShell"
},
{
"commandline": "%SystemRoot%\\System32\\cmd.exe",
"guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
"hidden": false,
"name": "S\u00edmbolo del sistema"
},
{
"guid": "{17bf3de4-5353-5709-bcf9-835bd952a95e}",
"hidden": true,
"name": "Ubuntu-22.04",
"source": "Windows.Terminal.Wsl"
},
{
"guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
"hidden": false,
"name": "Azure Cloud Shell",
"source": "Windows.Terminal.Azure"
},
{
"guid": "{d7b20cea-47a9-518c-95a4-c8bd91e2e1c6}",
"hidden": false,
"name": "Ubuntu 22.04.2 LTS",
"source": "CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc"
},
{
"guid": "{2ece5bfe-50ed-5f3a-ab87-5cd4baafed2b}",
"hidden": false,
"name": "Git Bash",
"source": "Git"
}
]
},
"schemes":
[
{
"background": "#0C0C0C",
"black": "#0C0C0C",
"blue": "#0037DA",
"brightBlack": "#767676",
"brightBlue": "#3B78FF",
"brightCyan": "#61D6D6",
"brightGreen": "#16C60C",
"brightPurple": "#B4009E",
"brightRed": "#E74856",
"brightWhite": "#F2F2F2",
"brightYellow": "#F9F1A5",
"cursorColor": "#FFFFFF",
"cyan": "#3A96DD",
"foreground": "#CCCCCC",
"green": "#13A10E",
"name": "Campbell",
"purple": "#881798",
"red": "#C50F1F",
"selectionBackground": "#FFFFFF",
"white": "#CCCCCC",
"yellow": "#C19C00"
},
{
"background": "#012456",
"black": "#0C0C0C",
"blue": "#0037DA",
"brightBlack": "#767676",
"brightBlue": "#3B78FF",
"brightCyan": "#61D6D6",
"brightGreen": "#16C60C",
"brightPurple": "#B4009E",
"brightRed": "#E74856",
"brightWhite": "#F2F2F2",
"brightYellow": "#F9F1A5",
"cursorColor": "#FFFFFF",
"cyan": "#3A96DD",
"foreground": "#CCCCCC",
"green": "#13A10E",
"name": "Campbell Powershell",
"purple": "#881798",
"red": "#C50F1F",
"selectionBackground": "#FFFFFF",
"white": "#CCCCCC",
"yellow": "#C19C00"
},
{
"background": "#282C34",
"black": "#282C34",
"blue": "#61AFEF",
"brightBlack": "#5A6374",
"brightBlue": "#61AFEF",
"brightCyan": "#56B6C2",
"brightGreen": "#98C379",
"brightPurple": "#C678DD",
"brightRed": "#E06C75",
"brightWhite": "#DCDFE4",
"brightYellow": "#E5C07B",
"cursorColor": "#FFFFFF",
"cyan": "#56B6C2",
"foreground": "#DCDFE4",
"green": "#98C379",
"name": "One Half Dark",
"purple": "#C678DD",
"red": "#E06C75",
"selectionBackground": "#FFFFFF",
"white": "#DCDFE4",
"yellow": "#E5C07B"
},
{
"background": "#FAFAFA",
"black": "#383A42",
"blue": "#0184BC",
"brightBlack": "#4F525D",
"brightBlue": "#61AFEF",
"brightCyan": "#56B5C1",
"brightGreen": "#98C379",
"brightPurple": "#C577DD",
"brightRed": "#DF6C75",
"brightWhite": "#FFFFFF",
"brightYellow": "#E4C07A",
"cursorColor": "#4F525D",
"cyan": "#0997B3",
"foreground": "#383A42",
"green": "#50A14F",
"name": "One Half Light",
"purple": "#A626A4",
"red": "#E45649",
"selectionBackground": "#FFFFFF",
"white": "#FAFAFA",
"yellow": "#C18301"
},
{
"background": "#002B36",
"black": "#002B36",
"blue": "#268BD2",
"brightBlack": "#073642",
"brightBlue": "#839496",
"brightCyan": "#93A1A1",
"brightGreen": "#586E75",
"brightPurple": "#6C71C4",
"brightRed": "#CB4B16",
"brightWhite": "#FDF6E3",
"brightYellow": "#657B83",
"cursorColor": "#FFFFFF",
"cyan": "#2AA198",
"foreground": "#839496",
"green": "#859900",
"name": "Solarized Dark",
"purple": "#D33682",
"red": "#DC322F",
"selectionBackground": "#FFFFFF",
"white": "#EEE8D5",
"yellow": "#B58900"
},
{
"background": "#FDF6E3",
"black": "#002B36",
"blue": "#268BD2",
"brightBlack": "#073642",
"brightBlue": "#839496",
"brightCyan": "#93A1A1",
"brightGreen": "#586E75",
"brightPurple": "#6C71C4",
"brightRed": "#CB4B16",
"brightWhite": "#FDF6E3",
"brightYellow": "#657B83",
"cursorColor": "#002B36",
"cyan": "#2AA198",
"foreground": "#657B83",
"green": "#859900",
"name": "Solarized Light",
"purple": "#D33682",
"red": "#DC322F",
"selectionBackground": "#FFFFFF",
"white": "#EEE8D5",
"yellow": "#B58900"
},
{
"background": "#000000",
"black": "#000000",
"blue": "#3465A4",
"brightBlack": "#555753",
"brightBlue": "#729FCF",
"brightCyan": "#34E2E2",
"brightGreen": "#8AE234",
"brightPurple": "#AD7FA8",
"brightRed": "#EF2929",
"brightWhite": "#EEEEEC",
"brightYellow": "#FCE94F",
"cursorColor": "#FFFFFF",
"cyan": "#06989A",
"foreground": "#D3D7CF",
"green": "#4E9A06",
"name": "Tango Dark",
"purple": "#75507B",
"red": "#CC0000",
"selectionBackground": "#FFFFFF",
"white": "#D3D7CF",
"yellow": "#C4A000"
},
{
"background": "#FFFFFF",
"black": "#000000",
"blue": "#3465A4",
"brightBlack": "#555753",
"brightBlue": "#729FCF",
"brightCyan": "#34E2E2",
"brightGreen": "#8AE234",
"brightPurple": "#AD7FA8",
"brightRed": "#EF2929",
"brightWhite": "#EEEEEC",
"brightYellow": "#FCE94F",
"cursorColor": "#000000",
"cyan": "#06989A",
"foreground": "#555753",
"green": "#4E9A06",
"name": "Tango Light",
"purple": "#75507B",
"red": "#CC0000",
"selectionBackground": "#FFFFFF",
"white": "#D3D7CF",
"yellow": "#C4A000"
},
{
"background": "#300A24",
"black": "#171421",
"blue": "#0037DA",
"brightBlack": "#767676",
"brightBlue": "#08458F",
"brightCyan": "#2C9FB3",
"brightGreen": "#26A269",
"brightPurple": "#A347BA",
"brightRed": "#C01C28",
"brightWhite": "#F2F2F2",
"brightYellow": "#A2734C",
"cursorColor": "#FFFFFF",
"cyan": "#3A96DD",
"foreground": "#FFFFFF",
"green": "#26A269",
"name": "Ubuntu-22.04-ColorScheme",
"purple": "#881798",
"red": "#C21A23",
"selectionBackground": "#FFFFFF",
"white": "#CCCCCC",
"yellow": "#A2734C"
},
{
"background": "#000000",
"black": "#000000",
"blue": "#000080",
"brightBlack": "#808080",
"brightBlue": "#0000FF",
"brightCyan": "#00FFFF",
"brightGreen": "#00FF00",
"brightPurple": "#FF00FF",
"brightRed": "#FF0000",
"brightWhite": "#FFFFFF",
"brightYellow": "#FFFF00",
"cursorColor": "#FFFFFF",
"cyan": "#008080",
"foreground": "#C0C0C0",
"green": "#008000",
"name": "Vintage",
"purple": "#800080",
"red": "#800000",
"selectionBackground": "#FFFFFF",
"white": "#C0C0C0",
"yellow": "#808000"
}
],
"showTabsInTitlebar": true,
"themes": [],
"useAcrylicInTabRow": true
}