Oh My Posh - Cross-Platform Prompt Engine
Oh My Posh is a custom prompt engine for any shell that has the ability to adjust the prompt string with a function or variable. It's designed to be fast, extensible, and cross-platform, with particular strength on Windows PowerShell and Windows Terminal. Oh My Posh provides beautiful themes, extensive customization options, and seamless integration across different operating systems and shells.
Installation
Windows Installation
PowerShell (Recommended)
# Install via PowerShell Gallery
Install-Module oh-my-posh -Scope CurrentUser
# Install via Winget
winget install JanDeDobbeleer.OhMyPosh
# Install via Chocolatey
choco install oh-my-posh
# Install via Scoop
scoop install https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/oh-my-posh.json
Manual Installation
# Download and install manually
Invoke-WebRequest -Uri "https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/posh-windows-amd64.exe" -OutFile "$env:USERPROFILE\oh-my-posh.exe"
# Add to PATH
$env:PATH += ";$env:USERPROFILE"
macOS Installation
# Homebrew
brew install jandedobbeleer/oh-my-posh/oh-my-posh
# Manual installation
curl -s https://ohmyposh.dev/install.sh|bash -s
# Add to PATH
export PATH=$PATH:/usr/local/bin
Linux Installation
# Install script
curl -s https://ohmyposh.dev/install.sh|bash -s
# Manual download
wget https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/posh-linux-amd64 -O /usr/local/bin/oh-my-posh
chmod +x /usr/local/bin/oh-my-posh
# Package managers
# Arch Linux
yay -S oh-my-posh
# Ubuntu/Debian (via .deb package)
wget https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/posh-linux-amd64.deb
sudo dpkg -i posh-linux-amd64.deb
Font Installation
# Install Nerd Fonts (required for icons)
oh-my-posh font install
# Install specific font
oh-my-posh font install meslo
# List available fonts
oh-my-posh font list
# Manual font installation
# Download from https://www.nerdfonts.com/
# Install CascadiaCode, FiraCode, or Meslo LG fonts
Shell Configuration
PowerShell Setup
# Add to PowerShell profile
# Check profile location
$PROFILE
# Create profile if it doesn't exist
if (!(Test-Path -Path $PROFILE)) \\\\{
New-Item -ItemType File -Path $PROFILE -Force
\\\\}
# Add Oh My Posh initialization
Add-Content -Path $PROFILE -Value 'oh-my-posh init pwsh|Invoke-Expression'
# With custom theme
Add-Content -Path $PROFILE -Value 'oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\jandedobbeleer.omp.json"|Invoke-Expression'
# Reload profile
. $PROFILE
Bash Setup
# Add to ~/.bashrc
echo 'eval "$(oh-my-posh init bash)"' >> ~/.bashrc
# With custom theme
echo 'eval "$(oh-my-posh init bash --config ~/.poshthemes/jandedobbeleer.omp.json)"' >> ~/.bashrc
# Reload configuration
source ~/.bashrc
Zsh Setup
# Add to ~/.zshrc
echo 'eval "$(oh-my-posh init zsh)"' >> ~/.zshrc
# With custom theme
echo 'eval "$(oh-my-posh init zsh --config ~/.poshthemes/jandedobbeleer.omp.json)"' >> ~/.zshrc
# Reload configuration
source ~/.zshrc
Fish Setup
# Add to ~/.config/fish/config.fish
echo 'oh-my-posh init fish|source' >> ~/.config/fish/config.fish
# With custom theme
echo 'oh-my-posh init fish --config ~/.poshthemes/jandedobbeleer.omp.json|source' >> ~/.config/fish/config.fish
# Reload configuration
source ~/.config/fish/config.fish
Command Prompt (CMD) Setup
# Install Clink first
# Download from: https://chrisant996.github.io/clink/
# Create oh-my-posh.lua in Clink scripts directory
# %LOCALAPPDATA%\clink\oh-my-posh.lua
load(io.popen('oh-my-posh init cmd'):read("*a"))()
Theme Management
Built-in Themes
# List all available themes
oh-my-posh get themes
# Preview themes
oh-my-posh get themes --list
# Set theme
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\agnoster.omp.json"|Invoke-Expression
# Popular themes
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\jandedobbeleer.omp.json"|Invoke-Expression
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\paradox.omp.json"|Invoke-Expression
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\powerlevel10k_rainbow.omp.json"|Invoke-Expression
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\atomic.omp.json"|Invoke-Expression
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\blue-owl.omp.json"|Invoke-Expression
Theme Locations
# Windows theme location
$env:POSH_THEMES_PATH
# macOS/Linux theme location
$(oh-my-posh get themes-path)
# List theme files
# Windows
Get-ChildItem -Path "$env:POSH_THEMES_PATH" -Filter "*.omp.json"
# macOS/Linux
ls $(oh-my-posh get themes-path)/*.omp.json
Custom Theme Creation
\\\\{
"$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json",
"version": 2,
"final_space": true,
"console_title_template": "\\\\{\\\\{ .Shell \\\\}\\\\} in \\\\{\\\\{ .Folder \\\\}\\\\}",
"blocks": [
\\\\{
"type": "prompt",
"alignment": "left",
"segments": [
\\\\{
"type": "path",
"style": "powerline",
"powerline_symbol": "\uE0B0",
"foreground": "#ffffff",
"background": "#61AFEF",
"template": " \uF07C \\\\{\\\\{ .Path \\\\}\\\\} ",
"properties": \\\\{
"style": "folder"
\\\\}
\\\\},
\\\\{
"type": "git",
"style": "powerline",
"powerline_symbol": "\uE0B0",
"foreground": "#193549",
"background": "#95ffa4",
"template": " \\\\{\\\\{ .HEAD \\\\}\\\\}\\\\{\\\\{if .BranchStatus \\\\}\\\\} \\\\{\\\\{ .BranchStatus \\\\}\\\\}\\\\{\\\\{ end \\\\}\\\\}\\\\{\\\\{ if .Working.Changed \\\\}\\\\} \uF044 \\\\{\\\\{ .Working.String \\\\}\\\\}\\\\{\\\\{ end \\\\}\\\\}\\\\{\\\\{ if and (.Staging.Changed) (.Working.Changed) \\\\}\\\\}|\\\\{\\\\{ end \\\\}\\\\}\\\\{\\\\{ if .Staging.Changed \\\\}\\\\} \uF046 \\\\{\\\\{ .Staging.String \\\\}\\\\}\\\\{\\\\{ end \\\\}\\\\} "
\\\\}
]
\\\\},
\\\\{
"type": "prompt",
"alignment": "right",
"segments": [
\\\\{
"type": "node",
"style": "plain",
"foreground": "#6CA35E",
"template": "\uF898 \\\\{\\\\{ .Full \\\\}\\\\} "
\\\\},
\\\\{
"type": "time",
"style": "plain",
"foreground": "#007ACC",
"template": "\\\\{\\\\{ .CurrentDate|date .Format \\\\}\\\\} "
\\\\}
]
\\\\},
\\\\{
"type": "prompt",
"alignment": "left",
"newline": true,
"segments": [
\\\\{
"type": "text",
"style": "plain",
"foreground": "#007ACC",
"template": "❯ "
\\\\}
]
\\\\}
]
\\\\}
Configuration Structure
Basic Configuration
\\\\{
"$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json",
"version": 2,
"final_space": true,
"console_title_template": "\\\\{\\\\{ .Shell \\\\}\\\\} in \\\\{\\\\{ .Folder \\\\}\\\\}",
"blocks": []
\\\\}
Block Configuration
\\\\{
"type": "prompt",
"alignment": "left",
"newline": false,
"segments": []
\\\\}
Segment Configuration
\\\\{
"type": "path",
"style": "powerline",
"powerline_symbol": "\uE0B0",
"foreground": "#ffffff",
"background": "#61AFEF",
"template": " \uF07C \\\\{\\\\{ .Path \\\\}\\\\} ",
"properties": \\\\{\\\\}
\\\\}
Core Segments
Path Segment
\\\\{
"type": "path",
"style": "powerline",
"powerline_symbol": "\uE0B0",
"foreground": "#ffffff",
"background": "#61AFEF",
"template": " \uF07C \\\\{\\\\{ .Path \\\\}\\\\} ",
"properties": \\\\{
"style": "folder",
"max_depth": 3,
"folder_separator_icon": " \uE0B1 ",
"home_icon": "~",
"folder_icon": "\uF07C",
"windows_registry_icon": "\uE0B1",
"mapped_locations": \\\\{
"C:\\temp": "\uF0E7",
"C:\\Users": "\uF007"
\\\\}
\\\\}
\\\\}
Git Segment
\\\\{
"type": "git",
"style": "powerline",
"powerline_symbol": "\uE0B0",
"foreground": "#193549",
"background": "#95ffa4",
"background_templates": [
"\\\\{\\\\{ if or (.Working.Changed) (.Staging.Changed) \\\\}\\\\}#FF9248\\\\{\\\\{ end \\\\}\\\\}",
"\\\\{\\\\{ if and (gt .Ahead 0) (gt .Behind 0) \\\\}\\\\}#ff4500\\\\{\\\\{ end \\\\}\\\\}",
"\\\\{\\\\{ if gt .Ahead 0 \\\\}\\\\}#B388FF\\\\{\\\\{ end \\\\}\\\\}",
"\\\\{\\\\{ if gt .Behind 0 \\\\}\\\\}#B388FF\\\\{\\\\{ end \\\\}\\\\}"
],
"template": " \\\\{\\\\{ .UpstreamIcon \\\\}\\\\}\\\\{\\\\{ .HEAD \\\\}\\\\}\\\\{\\\\{if .BranchStatus \\\\}\\\\} \\\\{\\\\{ .BranchStatus \\\\}\\\\}\\\\{\\\\{ end \\\\}\\\\}\\\\{\\\\{ if .Working.Changed \\\\}\\\\} \uF044 \\\\{\\\\{ .Working.String \\\\}\\\\}\\\\{\\\\{ end \\\\}\\\\}\\\\{\\\\{ if and (.Staging.Changed) (.Working.Changed) \\\\}\\\\}|\\\\{\\\\{ end \\\\}\\\\}\\\\{\\\\{ if .Staging.Changed \\\\}\\\\} \uF046 \\\\{\\\\{ .Staging.String \\\\}\\\\}\\\\{\\\\{ end \\\\}\\\\}\\\\{\\\\{ if gt .StashCount 0 \\\\}\\\\} \uF692 \\\\{\\\\{ .StashCount \\\\}\\\\}\\\\{\\\\{ end \\\\}\\\\} ",
"properties": \\\\{
"branch_max_length": 25,
"fetch_status": true,
"fetch_upstream_icon": true
\\\\}
\\\\}
Status Segment
\\\\{
"type": "status",
"style": "diamond",
"foreground": "#ffffff",
"background": "#00897b",
"background_templates": [
"\\\\{\\\\{ if gt .Code 0 \\\\}\\\\}#e91e63\\\\{\\\\{ end \\\\}\\\\}"
],
"leading_diamond": "<transparent,background>\uE0B0</>",
"trailing_diamond": "\uE0B4",
"template": " \\\\{\\\\{ if gt .Code 0 \\\\}\\\\}\uF00D\\\\{\\\\{ else \\\\}\\\\}\uF00C\\\\{\\\\{ end \\\\}\\\\} ",
"properties": \\\\{
"always_enabled": true
\\\\}
\\\\}
Time Segment
\\\\{
"type": "time",
"style": "plain",
"foreground": "#007ACC",
"template": "\\\\{\\\\{ .CurrentDate|date .Format \\\\}\\\\}",
"properties": \\\\{
"time_format": "15:04:05"
\\\\}
\\\\}
Language and Runtime Segments
Node.js Segment
\\\\{
"type": "node",
"style": "powerline",
"powerline_symbol": "\uE0B0",
"foreground": "#ffffff",
"background": "#6CA35E",
"template": " \uF898 \\\\{\\\\{ .Full \\\\}\\\\} ",
"properties": \\\\{
"fetch_version": true,
"missing_command_text": "",
"display_mode": "files",
"version_url_template": "https://nodejs.org/en/download/releases/",
"extensions": ["js", "ts"],
"folders": ["node_modules", ".nvmrc"],
"files": ["package.json", ".node-version", ".nvmrc"]
\\\\}
\\\\}
Python Segment
\\\\{
"type": "python",
"style": "powerline",
"powerline_symbol": "\uE0B0",
"foreground": "#111111",
"background": "#FFDE57",
"template": " \uF81F \\\\{\\\\{ .Full \\\\}\\\\} ",
"properties": \\\\{
"display_mode": "files",
"fetch_virtual_env": false
\\\\}
\\\\}
Go Segment
\\\\{
"type": "go",
"style": "powerline",
"powerline_symbol": "\uE0B0",
"foreground": "#111111",
"background": "#8ED1F7",
"template": " \uFCD1 \\\\{\\\\{ .Full \\\\}\\\\} ",
"properties": \\\\{
"fetch_version": true
\\\\}
\\\\}
Rust Segment
\\\\{
"type": "rust",
"style": "powerline",
"powerline_symbol": "\uE0B0",
"foreground": "#193549",
"background": "#99908a",
"template": " \uE7a8 \\\\{\\\\{ .Full \\\\}\\\\} ",
"properties": \\\\{
"fetch_version": true
\\\\}
\\\\}
Java Segment
\\\\{
"type": "java",
"style": "powerline",
"powerline_symbol": "\uE0B0",
"foreground": "#ffffff",
"background": "#4063D8",
"template": " \uF675 \\\\{\\\\{ .Full \\\\}\\\\} ",
"properties": \\\\{
"fetch_version": true
\\\\}
\\\\}
Docker Segment
\\\\{
"type": "docker",
"style": "powerline",
"powerline_symbol": "\uE0B0",
"foreground": "#000000",
"background": "#0B59E7",
"template": " \uF308 \\\\{\\\\{ .Context \\\\}\\\\} ",
"properties": \\\\{
"display_mode": "files"
\\\\}
\\\\}
System Information Segments
OS Segment
\\\\{
"type": "os",
"style": "diamond",
"foreground": "#26C6DA",
"background": "#546E7A",
"leading_diamond": "\uE0B6",
"trailing_diamond": "<transparent,background>\uE0B0</>",
"template": " \\\\{\\\\{ if .WSL \\\\}\\\\}WSL at \\\\{\\\\{ end \\\\}\\\\}\\\\{\\\\{.Icon\\\\}\\\\} ",
"properties": \\\\{
"macos": "\uF179",
"ubuntu": "\uF31b",
"windows": "\uF17a"
\\\\}
\\\\}
Session Segment
\\\\{
"type": "session",
"style": "diamond",
"foreground": "#ffffff",
"background": "#c386f1",
"leading_diamond": "\uE0B6",
"trailing_diamond": "\uE0B0",
"template": " \\\\{\\\\{ .UserName \\\\}\\\\} ",
"properties": \\\\{
"display_host": false
\\\\}
\\\\}
Battery Segment
\\\\{
"type": "battery",
"style": "powerline",
"powerline_symbol": "\uE0B0",
"foreground": "#193549",
"background": "#f36943",
"background_templates": [
"\\\\{\\\\{if eq \"Charging\" .State.String\\\\}\\\\}#40c4ff\\\\{\\\\{end\\\\}\\\\}",
"\\\\{\\\\{if eq \"Discharging\" .State.String\\\\}\\\\}#ff5722\\\\{\\\\{end\\\\}\\\\}",
"\\\\{\\\\{if eq \"Full\" .State.String\\\\}\\\\}#4caf50\\\\{\\\\{end\\\\}\\\\}"
],
"template": " \\\\{\\\\{ if not .Error \\\\}\\\\}\\\\{\\\\{ .Icon \\\\}\\\\}\\\\{\\\\{ .Percentage \\\\}\\\\}\\\\{\\\\{ end \\\\}\\\\}\\\\{\\\\{ .Error \\\\}\\\\}\uF295 ",
"properties": \\\\{
"discharging_icon": "\uE231 ",
"charging_icon": "\uE234 ",
"charged_icon": "\uE22F "
\\\\}
\\\\}
Memory Segment
\\\\{
"type": "sysinfo",
"style": "powerline",
"powerline_symbol": "\uE0B0",
"foreground": "#ffffff",
"background": "#8f43f3",
"template": " \uF85A \\\\{\\\\{ round .PhysicalPercentUsed .Precision \\\\}\\\\}% ",
"properties": \\\\{
"precision": 2
\\\\}
\\\\}
Cloud and DevOps Segments
AWS Segment
\\\\{
"type": "aws",
"style": "powerline",
"powerline_symbol": "\uE0B0",
"foreground": "#ffffff",
"background": "#FFA400",
"template": " \uF270 \\\\{\\\\{.Profile\\\\}\\\\}\\\\{\\\\{if .Region\\\\}\\\\}@\\\\{\\\\{.Region\\\\}\\\\}\\\\{\\\\{end\\\\}\\\\} ",
"properties": \\\\{
"display_default": false
\\\\}
\\\\}
Azure Segment
\\\\{
"type": "az",
"style": "powerline",
"powerline_symbol": "\uE0B0",
"foreground": "#000000",
"background": "#9ec3f0",
"template": " \uFD03 \\\\{\\\\{ .Name \\\\}\\\\} ",
"properties": \\\\{
"display_default": true
\\\\}
\\\\}
Kubernetes Segment
\\\\{
"type": "kubectl",
"style": "powerline",
"powerline_symbol": "\uE0B0",
"foreground": "#000000",
"background": "#ebcc34",
"template": " \uFD31 \\\\{\\\\{.Context\\\\}\\\\}\\\\{\\\\{if .Namespace\\\\}\\\\} :: \\\\{\\\\{.Namespace\\\\}\\\\}\\\\{\\\\{end\\\\}\\\\} ",
"properties": \\\\{
"display_error": false
\\\\}
\\\\}
Terraform Segment
\\\\{
"type": "terraform",
"style": "powerline",
"powerline_symbol": "\uE0B0",
"foreground": "#000000",
"background": "#ebcc34",
"template": " \uF1BB \\\\{\\\\{.WorkspaceName\\\\}\\\\} "
\\\\}
Advanced Features
Conditional Templates
\\\\{
"type": "git",
"style": "powerline",
"powerline_symbol": "\uE0B0",
"foreground": "#193549",
"background": "#95ffa4",
"background_templates": [
"\\\\{\\\\{ if or (.Working.Changed) (.Staging.Changed) \\\\}\\\\}#FF9248\\\\{\\\\{ end \\\\}\\\\}",
"\\\\{\\\\{ if and (gt .Ahead 0) (gt .Behind 0) \\\\}\\\\}#ff4500\\\\{\\\\{ end \\\\}\\\\}",
"\\\\{\\\\{ if gt .Ahead 0 \\\\}\\\\}#B388FF\\\\{\\\\{ end \\\\}\\\\}",
"\\\\{\\\\{ if gt .Behind 0 \\\\}\\\\}#B388FF\\\\{\\\\{ end \\\\}\\\\}"
],
"foreground_templates": [
"\\\\{\\\\{ if or (.Working.Changed) (.Staging.Changed) \\\\}\\\\}#E3F2FD\\\\{\\\\{ end \\\\}\\\\}"
],
"template": " \\\\{\\\\{ .UpstreamIcon \\\\}\\\\}\\\\{\\\\{ .HEAD \\\\}\\\\}\\\\{\\\\{if .BranchStatus \\\\}\\\\} \\\\{\\\\{ .BranchStatus \\\\}\\\\}\\\\{\\\\{ end \\\\}\\\\}\\\\{\\\\{ if .Working.Changed \\\\}\\\\} \uF044 \\\\{\\\\{ .Working.String \\\\}\\\\}\\\\{\\\\{ end \\\\}\\\\}\\\\{\\\\{ if and (.Staging.Changed) (.Working.Changed) \\\\}\\\\}|\\\\{\\\\{ end \\\\}\\\\}\\\\{\\\\{ if .Staging.Changed \\\\}\\\\} \uF046 \\\\{\\\\{ .Staging.String \\\\}\\\\}\\\\{\\\\{ end \\\\}\\\\}\\\\{\\\\{ if gt .StashCount 0 \\\\}\\\\} \uF692 \\\\{\\\\{ .StashCount \\\\}\\\\}\\\\{\\\\{ end \\\\}\\\\} "
\\\\}
Custom Variables
\\\\{
"type": "text",
"style": "plain",
"foreground": "#E06C75",
"template": "\\\\{\\\\{ .Env.CUSTOM_VAR \\\\}\\\\} "
\\\\}
Cross-Platform Configuration
\\\\{
"type": "path",
"style": "powerline",
"powerline_symbol": "\uE0B0",
"foreground": "#ffffff",
"background": "#61AFEF",
"template": " \\\\{\\\\{ if .WSL \\\\}\\\\}\uF17a \\\\{\\\\{ end \\\\}\\\\}\uF07C \\\\{\\\\{ .Path \\\\}\\\\} ",
"properties": \\\\{
"style": "folder",
"mapped_locations": \\\\{
"C:\\temp": "\uF0E7",
"/tmp": "\uF0E7",
"~": "\uF015"
\\\\}
\\\\}
\\\\}
Multi-line Prompts
\\\\{
"blocks": [
\\\\{
"type": "prompt",
"alignment": "left",
"segments": [
\\\\{
"type": "path",
"style": "plain",
"foreground": "#61AFEF",
"template": "\uF07C \\\\{\\\\{ .Path \\\\}\\\\}"
\\\\}
]
\\\\},
\\\\{
"type": "prompt",
"alignment": "right",
"segments": [
\\\\{
"type": "time",
"style": "plain",
"foreground": "#007ACC",
"template": "\\\\{\\\\{ .CurrentDate|date .Format \\\\}\\\\}"
\\\\}
]
\\\\},
\\\\{
"type": "prompt",
"alignment": "left",
"newline": true,
"segments": [
\\\\{
"type": "text",
"style": "plain",
"foreground": "#007ACC",
"template": "❯ "
\\\\}
]
\\\\}
]
\\\\}
Customization and Styling
Color Schemes
\\\\{
"palette": \\\\{
"os-color": "#ACB0BE",
"closer-color": "#575656",
"pink": "#F25D94",
"lavender": "#LAVENDER",
"blue": "#06BCE4"
\\\\},
"blocks": [
\\\\{
"type": "prompt",
"alignment": "left",
"segments": [
\\\\{
"type": "os",
"style": "diamond",
"foreground": "p:os-color",
"background": "p:closer-color",
"leading_diamond": "\uE0B6",
"trailing_diamond": "\uE0B0",
"template": " \\\\{\\\\{ .Icon \\\\}\\\\} "
\\\\}
]
\\\\}
]
\\\\}
Icons and Symbols
\\\\{
"type": "git",
"style": "powerline",
"powerline_symbol": "\uE0B0",
"template": " \\\\{\\\\{ .UpstreamIcon \\\\}\\\\}\\\\{\\\\{ .HEAD \\\\}\\\\}\\\\{\\\\{ if .Working.Changed \\\\}\\\\} \uF044 \\\\{\\\\{ .Working.String \\\\}\\\\}\\\\{\\\\{ end \\\\}\\\\} ",
"properties": \\\\{
"branch_icon": "\uF126 ",
"commit_icon": "\uF417 ",
"fetch_status": true,
"fetch_upstream_icon": true,
"untracked_modes": \\\\{
"no": "\uF059",
"normal": "\uF059",
"all": "\uF059"
\\\\},
"status_formats": \\\\{
"added": "\uF457",
"copied": "\uF4A5",
"deleted": "\uF458",
"modified": "\uF459",
"renamed": "\uF45A",
"unmerged": "\uF426",
"untracked": "\uF059"
\\\\}
\\\\}
\\\\}
Powerline Symbols
\\\\{
"type": "path",
"style": "powerline",
"powerline_symbol": "\uE0B0",
"inverse_powerline": false,
"foreground": "#ffffff",
"background": "#61AFEF",
"template": " \uF07C \\\\{\\\\{ .Path \\\\}\\\\} "
\\\\}
Diamond Style
\\\\{
"type": "os",
"style": "diamond",
"foreground": "#26C6DA",
"background": "#546E7A",
"leading_diamond": "\uE0B6",
"trailing_diamond": "\uE0B4",
"template": " \\\\{\\\\{ .Icon \\\\}\\\\} "
\\\\}
Performance and Optimization
Caching
\\\\{
"type": "git",
"style": "powerline",
"powerline_symbol": "\uE0B0",
"template": " \\\\{\\\\{ .HEAD \\\\}\\\\} ",
"properties": \\\\{
"fetch_status": false,
"fetch_upstream_icon": false
\\\\}
\\\\}
Conditional Display
\\\\{
"type": "node",
"style": "powerline",
"powerline_symbol": "\uE0B0",
"template": " \uF898 \\\\{\\\\{ .Full \\\\}\\\\} ",
"properties": \\\\{
"display_mode": "files",
"fetch_version": true
\\\\}
\\\\}
Timeout Configuration
\\\\{
"type": "kubectl",
"style": "powerline",
"powerline_symbol": "\uE0B0",
"template": " \uFD31 \\\\{\\\\{.Context\\\\}\\\\} ",
"properties": \\\\{
"parse_kubeconfig": false,
"timeout": 2000
\\\\}
\\\\}
Command Line Usage
Theme Management
# Get current theme
oh-my-posh get theme
# Set theme
oh-my-posh init pwsh --config "~/.mytheme.omp.json"|Invoke-Expression
# Export current theme
oh-my-posh config export --output ~/.mytheme.omp.json
# Validate theme
oh-my-posh config validate --config ~/.mytheme.omp.json
# Migrate theme from v2 to v3
oh-my-posh config migrate --config ~/.mytheme.omp.json
Debugging
# Debug mode
oh-my-posh init pwsh --config ~/.mytheme.omp.json --debug|Invoke-Expression
# Print configuration
oh-my-posh config get --config ~/.mytheme.omp.json
# Test segment
oh-my-posh debug segment --config ~/.mytheme.omp.json --segment git
# Performance profiling
oh-my-posh init pwsh --config ~/.mytheme.omp.json --profile|Invoke-Expression
Cache Management
# Clear cache
oh-my-posh cache clear
# Cache path
oh-my-posh cache path
# Cache statistics
oh-my-posh cache get --key git
Integration Examples
Windows Terminal Integration
\\\\{
"profiles": \\\\{
"defaults": \\\\{
"font": \\\\{
"face": "CascadiaCode Nerd Font"
\\\\}
\\\\},
"list": [
\\\\{
"name": "PowerShell",
"source": "Windows.Terminal.PowershellCore",
"startingDirectory": "%USERPROFILE%"
\\\\}
]
\\\\}
\\\\}
VS Code Integration
\\\\{
"terminal.integrated.fontFamily": "CascadiaCode Nerd Font",
"terminal.integrated.fontSize": 12,
"terminal.integrated.profiles.windows": \\\\{
"PowerShell": \\\\{
"source": "PowerShell",
"icon": "terminal-powershell"
\\\\}
\\\\}
\\\\}
Azure Cloud Shell
# Install in Azure Cloud Shell
curl -s https://ohmyposh.dev/install.sh|bash -s -- -d ~/bin
echo 'export PATH=$PATH:~/bin' >> ~/.bashrc
echo 'eval "$(oh-my-posh init bash)"' >> ~/.bashrc
Troubleshooting
Common Issues
# Font rendering issues
# Install Nerd Font and configure terminal
# PowerShell execution policy
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
# Module import issues
Import-Module oh-my-posh -Force
# Theme not loading
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\jandedobbeleer.omp.json"|Invoke-Expression
# Performance issues
oh-my-posh init pwsh --config ~/.mytheme.omp.json --profile|Invoke-Expression
Debug Commands
# Check installation
oh-my-posh --version
# Validate configuration
oh-my-posh config validate --config ~/.mytheme.omp.json
# Test specific segment
oh-my-posh debug segment --config ~/.mytheme.omp.json --segment path
# Environment information
oh-my-posh debug environment
Configuration Validation
# Schema validation
oh-my-posh config validate --config ~/.mytheme.omp.json
# Export for sharing
oh-my-posh config export --output ~/.mytheme.omp.json
# Migrate old configuration
oh-my-posh config migrate --config ~/.old-theme.json
Oh My Posh provides a powerful, cross-platform solution for prompt customization that excels particularly in Windows environments while maintaining full compatibility with Unix-like systems. Its JSON-based configuration system, extensive theming capabilities, and strong Windows Terminal integration make it an excellent choice for developers working across multiple platforms. Whether you're using PowerShell on Windows, Bash on Linux, or any shell in between, Oh My Posh delivers consistent, beautiful, and informative prompts that enhance your command-line experience.