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
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.
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
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
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
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!