Last active
December 19, 2018 11:12
-
-
Save mimukit/1f1c9d1eb9d3f301c15ed7fec2733b27 to your computer and use it in GitHub Desktop.
Custom powershell theme for oh-my-posh
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Theme Name - CustomAgnoster.psm1 | |
# Theme Directory - ~\Documents\WindowsPowerShell\PoshThemes | |
# Apply Theme - Set-Theme CustomAgnoster | |
# Author - Mukitul Islam Mukit | |
#requires -Version 2 -Modules posh-git | |
function Write-Theme { | |
param( | |
[bool] | |
$lastCommandFailed, | |
[string] | |
$with | |
) | |
$lastColor = $sl.Colors.PromptBackgroundColor | |
$promptColor = $sl.Colors.WithBackgroundColor | |
$prompt += Set-Newline | |
$prompt = Write-Prompt -Object $sl.PromptSymbols.StartSymbol -ForegroundColor $sl.Colors.SessionInfoForegroundColor -BackgroundColor $sl.Colors.SessionInfoBackgroundColor | |
#check the last command state and indicate if failed | |
If ($lastCommandFailed) { | |
$prompt += Write-Prompt -Object "$($sl.PromptSymbols.FailedCommandSymbol) " -ForegroundColor $sl.Colors.CommandFailedIconForegroundColor -BackgroundColor $sl.Colors.SessionInfoBackgroundColor | |
} | |
#check for elevated prompt | |
If (Test-Administrator) { | |
$prompt += Write-Prompt -Object "$($sl.PromptSymbols.ElevatedSymbol) " -ForegroundColor $sl.Colors.AdminIconForegroundColor -BackgroundColor $sl.Colors.SessionInfoBackgroundColor | |
} | |
$user = [System.Environment]::UserName | |
$computer = [System.Environment]::MachineName | |
if (Test-NotDefaultUser($user)) { | |
$prompt += Write-Prompt -Object "$user@$computer " -ForegroundColor $sl.Colors.SessionInfoForegroundColor -BackgroundColor $sl.Colors.SessionInfoBackgroundColor | |
} | |
if (Test-VirtualEnv) { | |
$prompt += Write-Prompt -Object "$($sl.PromptSymbols.SegmentForwardSymbol) " -ForegroundColor $sl.Colors.SessionInfoBackgroundColor -BackgroundColor $sl.Colors.VirtualEnvBackgroundColor | |
$prompt += Write-Prompt -Object "$($sl.PromptSymbols.VirtualEnvSymbol) $(Get-VirtualEnvName) " -ForegroundColor $sl.Colors.VirtualEnvForegroundColor -BackgroundColor $sl.Colors.VirtualEnvBackgroundColor | |
$prompt += Write-Prompt -Object "$($sl.PromptSymbols.SegmentForwardSymbol) " -ForegroundColor $sl.Colors.VirtualEnvBackgroundColor -BackgroundColor $sl.Colors.PromptBackgroundColor | |
} | |
else { | |
$prompt += Write-Prompt -Object "$($sl.PromptSymbols.SegmentForwardSymbol) " -ForegroundColor $sl.Colors.SessionInfoBackgroundColor -BackgroundColor $sl.Colors.PromptBackgroundColor | |
} | |
# Writes the drive portion | |
$prompt += Write-Prompt -Object (Get-ShortPath -dir $pwd) -ForegroundColor $sl.Colors.PromptForegroundColor -BackgroundColor $sl.Colors.PromptBackgroundColor | |
$prompt += Write-Prompt -Object ' ' -ForegroundColor $sl.Colors.PromptForegroundColor -BackgroundColor $sl.Colors.PromptBackgroundColor | |
$status = Get-VCSStatus | |
if ($status) { | |
$themeInfo = Get-VcsInfo -status ($status) | |
$lastColor = $themeInfo.BackgroundColor | |
$prompt += Write-Prompt -Object $sl.PromptSymbols.SegmentForwardSymbol -ForegroundColor $sl.Colors.PromptBackgroundColor -BackgroundColor $lastColor | |
$prompt += Write-Prompt -Object " $($themeInfo.VcInfo) " -BackgroundColor $lastColor -ForegroundColor $sl.Colors.GitForegroundColor | |
} | |
if ($with) { | |
$prompt += Write-Prompt -Object $sl.PromptSymbols.SegmentForwardSymbol -ForegroundColor $lastColor -BackgroundColor $sl.Colors.WithBackgroundColor | |
$prompt += Write-Prompt -Object " $($with.ToUpper()) " -BackgroundColor $sl.Colors.WithBackgroundColor -ForegroundColor $sl.Colors.WithForegroundColor | |
$lastColor = $sl.Colors.WithBackgroundColor | |
} | |
# Writes the postfix to the prompt | |
$prompt += Write-Prompt -Object $sl.PromptSymbols.SegmentForwardSymbol -ForegroundColor $lastColor | |
$prompt += Set-Newline | |
$prompt += Set-Newline | |
$prompt += Write-Prompt -Object $sl.PromptSymbols.PromptIndicator -ForegroundColor $promptColor | |
$prompt += ' ' | |
$prompt | |
} | |
$sl = $global:ThemeSettings #local settings | |
$sl.PromptSymbols.StartSymbol = '' | |
$sl.PromptSymbols.PromptIndicator = [char]::ConvertFromUtf32(0x279C) | |
# $sl.PromptSymbols.SegmentForwardSymbol = [char]::ConvertFromUtf32(0xE0B0) | |
$sl.Colors.PromptForegroundColor = [ConsoleColor]::White | |
$sl.Colors.PromptSymbolColor = [ConsoleColor]::White | |
$sl.Colors.PromptHighlightColor = [ConsoleColor]::DarkBlue | |
$sl.Colors.GitForegroundColor = [ConsoleColor]::Black | |
$sl.Colors.WithForegroundColor = [ConsoleColor]::White | |
$sl.Colors.WithBackgroundColor = [ConsoleColor]::DarkRed | |
$sl.Colors.VirtualEnvBackgroundColor = [System.ConsoleColor]::Red | |
$sl.Colors.VirtualEnvForegroundColor = [System.ConsoleColor]::White |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Theme Preview:
Requirements
Installation
CustomAgnoster.psm1
& copy the code~\Documents\WindowsPowerShell\PoshThemes
Set-Theme CustomAgnoster