oh-my-posh
Table of Contents
About
A theme engine for Powershell in ConEmu inspired by the work done by Chris Benti on PS-Config and Oh-My-ZSH on OSX and Linux (hence the name).
More information about why I made this can be found on my blog.
Features:
- Easy installation
- Awesome prompt themes for PowerShell in ConEmu
- Git status indications (powered by posh-git)
- Failed command indication
- Admin indication
- Current session indications (admin, failed command, user)
- Configurable
- Easily create your own theme
- Separate settings for oh-my-posh and posh-git
- Does not mess with the default Powershell console
Prerequisites
You should use ConEmu to have a brilliant terminal experience on Windows. You can install it using Chocolatey:
choco install ConEmu
The fonts I use are Powerline fonts, there is a great repository containing them.
I use Meslo LG M Regular for Powerline Nerd Font
in my ConEmu setup together with custom colors. You can find my theme here.
Installation
You need to use the the PowerShell Gallery to install oh-my-posh.
Install posh-git and oh-my-posh:
Install-Module posh-git -Scope CurrentUser
Install-Module oh-my-posh -Scope CurrentUser
Enable engine in your PowerShell profile:
if (!(Test-Path -Path $PROFILE )) { New-Item -Type File -Path $PROFILE -Force }
notepad $PROFILE
Append following lines to your PowerShell profile:
Import-Module posh-git
Import-Module oh-my-posh
Set-Theme paradox
Last command sets theme for the console. Check available themes list below.
Configuration
List the current configuration:
$ThemeSettings
You can tweak the settings by manipulating $ThemeSettings
.
This example allows you to tweak the branch symbol using a unicode character:
$ThemeSettings.GitSymbols.BranchSymbol = [char]::ConvertFromUtf32(0xE0A0)
Also do not forget the Posh-Git settings itself (enable the stash indication for example):
$GitPromptSettings
Hide your username@domain
when not in a virtual machine for the Agnoster, Fish, Honukai, Paradox and Sorin themes:
$DefaultUser = 'yourUsernameHere'
Helper functions
Set-Theme
: set a theme from the Themes directory. If no match is found, it will not be changed. Autocomplete is available to list and complete available themes.
Set-Theme paradox
Show-ThemeColors
: display the colors used by the theme
Show-Colors
: display colors configured in ConEmu
Themes
Agnoster
Paradox
Sorin
Darkblood
Avit
Honukai
Fish
Creating your own theme
If you want to create a theme it can be done rather easily by adding a mytheme.psm1
file in the folder indicated in $ThemeSettings.MyThemesLocation
(the folder defaults to ~\Documents\WindowsPowerShell\PoshThemes
, feel free to change it).
The only required function is Write-Theme
. You can use the following template to get started:
#requires -Version 2 -Modules posh-git
function Write-Theme
{
param(
[bool]
$lastCommandFailed,
[string]
$with
)
# enter your prompt building logic here
}
$sl = $global:ThemeSettings #local settings
Feel free to use the public helper functions Get-VCSStatus
, Get-VcsInfo
, Get-Drive
, Get-ShortPath
, Set-CursorForRightBlockWrite
, Save-CursorPosition
, Pop-CursorPosition
, Set-CursorUp
or add your own logic completely.
To test the output in ConEmu, just switch to your theme:
Set-Theme mytheme
If you want to include your theme in oh-my-posh, send me a PR and I'll try to give feedback ASAP.
Happy theming!