How to setup oh-my-posh in Windows Terminal
Updated 2024-02-26: Added instructions for oh-my-posh in git-bash in MINGW.
Updated 2024-02-22: Fixed winget package name conflict. Updated Meslo nerd font to v3.1.1.
Updated 2023-10-05: Added instructions for oh-my-posh in git-bash in Visual Studio.
While surfing the web (do people still say that?) I’ve seen several programmers have their shell decorated in a neat way, such as:
—IMAGE— oh-my-posh-ex1.jpgI think this looks great, so I wanted to learn how to set it up.
I’ve tried several multi-tabbed terminal emulators over the years… mostly ConEmu and Cmder, but I’ve been using Windows Terminal
for a while now. Microsoft has iterated on it very fast recently, and it has some nice features that are fairly easy to configure. I also mostly do my work in the git-bash
shell in Windows Terminal.
So this post will show you how to setup oh-my-posh
in git-bash in a few different terminals for Windows 10 and up. The main instructions are in the first section for Windows Terminal
, so you should follow them first, as other sections depend on those instructions. Let’s get started:
Oh-my-posh in git-bash in Windows Terminal
- Install Windows Terminal from the Microsoft Store
- Install Git for Windows. This installs
git-bash
. During install, include the option to add git-bash to Windows Terminal settings. - Install Nerd Font MesloLGM Nerd Font (or something else from www.nerdfonts.com)
- Extract
MesloLGMNerdFont-Regular.ttf
- Right click the ttf file ->
Install for all users
(On Windows11, you need to clickShow more options
first.)
- Extract
- Open Windows Terminal -> Click the down-arrow in the title bar -> Settings -> click
Open JSON file
in lower-left -> Add the following withinprofiles
section:
"defaults": {
"font":
{
"face": "MesloLGM Nerd Font"
}
},
- You can also add
"size": 10
under thefont
section to set the font size. - Save
settings.json
- You may get a message saying it can’t find the font file. Try restarting Windows Terminal. If still an issue, make sure the correct “face” name string is set by opening the Windows
Font settings
and search formeslo
to see the correct face name. - Install
oh-my-posh
by running the following, which installs oh-my-posh.exe and adds it to your PATH, and addsPOSH_THEMES_PATH
environment var:
winget install JanDeDobbeleer.OhMyPosh
- In the future, to update oh-my-posh, run:
winget upgrade JanDeDobbeleer.OhMyPosh
- Restart Windows Terminal so it sees the new environment vars.
- Tell git-bash to use oh-my-posh along with a specific theme:
- oh-my-posh themes are installed to
%localappdata%/Programs/oh-my-posh/themes
- You can preview these themes here: https://ohmyposh.dev/docs/themes
- In git-bash, run
nano ~/.bash_profile
and add the following (change the theme file if you wish):
- oh-my-posh themes are installed to
eval "$(oh-my-posh --init --shell bash --config ~/AppData/Local/Programs/oh-my-posh/themes/powerline.omp.json)"
- Save, exit nano, and run
source ~/.bash_profile
then you should be able to see the new prompt.
Oh-my-posh in PowerShell in Windows Terminal
Same as above instructions for git-bash, but we need to add the oh-my-posh command and theme to our user’s PowerShell $PROFILE
.
Update: As of Feb 2024, I only had to run the “Set-ExecutionPolicy RemoteSigned” command as admin, then it just worked (assuming you followed the instructions above for git-bash.)
To see the location of your $PROFILE file (which may not actually be created yet even though it returns a path):
echo $PROFILE
You can create the profile (it won’t overwrite if it already exists), by running:
if (!(Test-Path -Path $PROFILE)) {
New-Item -ItemType File -Path $PROFILE -Force
}
Open your $PROFILE file with notepad $PROFILE
and add the following, save, and reopen PowerShell:
oh-my-posh --init --shell pwsh --config ~/AppData/Local/Programs/oh-my-posh/themes/powerline.omp.json | Invoke-Expression
If you get an error message saying you can’t run your profile script, run powershell as admin, and run:
Set-ExecutionPolicy RemoteSigned
Oh-my-posh in git-bash in MINGW
If you followed the instructions for setting up Oh-my-posh in git-bash in Windows Terminal
, it’s also easy to get it working in git-bash in the MINGW terminal, which is the terminal that comes with Git for Windows
. You already have oh-my-posh running within it, because it runs via ~/.bash_profile
. So the only thing you need to do is tell MINGW to use your font.
Unfortunately, MINGW only shows a set of Monospaced fonts in it’s GUI settings, so we have to do it via a config file. Open git-bash in MINGW, then type:
cd ~
nano .minttyrc
Use this as the contents of ~/.minttyrc
FontHeight=11
Font=MesloLGM Nerd Font
Save and exit nano, then restart git-bash / MINGW to see the updated prompt. Adjust the FontHeight as needed.
Thanks to this SO post for this solution.
Visual Studio Code - Terminal Font Setup
If you use Visual Studio Code, you’ll probably notice that some of the characters in the prompt don’t display correctly in it’s integrated bash terminal. You can easily fix this by setting the terminal font to the same font we used above:
- Opening settings by pressing
ctrl-shift-p
to open the command panel and type settings and open the settings UI. - Search the settings UI for
terminal font
and find theTerminal > Integrated: Font Family
setting. - Set it to the same font face name you used above, which is
MesloLGM Nerd Font
in this case. - It should update immediately and you should be good to go.
Visual Studio - git-bash Terminal Setup
If you use Visual Studio and you’ve followed the instructions above to get oh-my-posh working in Git Bash, you can easily get it working in Visual Studio by following these steps (This was done in Visual Studio 2022):
- Go to the
Tools menu > Options
. - Under
Environment > Terminal
, clickAdd
. - Give it a Name. Something like
Git Bash
. - Shell Location will most likely be
C:\Program Files\Git\bin\sh.exe
, but maybe you installed Git Bash to a different volume/folder. - Set Arguments to
--login -i
- Optionally set
Git Bash
as the default Terminal by clickingSet as Default
. - Click
Apply
andOK
. - Under
Environment > Fonts and Colors
, in theShow settings for
drop-down, selectTerminal
. - In the
Font
drop-down, select the nerd-font that you used with Git Bash above. I’m usingMesloLGM Nerd Font
. - Click
OK
. - Open a Terminal: Go to the
View menu > Terminal
. Open a Git Bash terminal (if it’s not already default).