Downloads:
476,439
Downloads of v 2.0.478:
318
Last Update:
25 Sep 2020
Package Maintainer(s):
Software Author(s):
- JanDeDobbeleer
Tags:
powershell oh-my-posh posh conemu- Software Specific:
- Software Site
- Software Source
- Software License
- Software Docs
- Software Issues
- Package Specific:
- Package Source
- Package outdated?
- Package broken?
- Contact Maintainers
- Contact Site Admins
- Software Vendor?
- Report Abuse
- Download
Oh-My-Posh
This is not the latest version of Oh-My-Posh available.
- 1
- 2
- 3
2.0.478 | Updated: 25 Sep 2020
- Software Specific:
- Software Site
- Software Source
- Software License
- Software Docs
- Software Issues
- Package Specific:
- Package Source
- Package outdated?
- Package broken?
- Contact Maintainers
- Contact Site Admins
- Software Vendor?
- Report Abuse
- Download
Downloads:
476,439
Downloads of v 2.0.478:
318
Maintainer(s):
Software Author(s):
- JanDeDobbeleer
Oh-My-Posh 2.0.478
This is not the latest version of Oh-My-Posh available.
Legal Disclaimer: Neither this package nor Chocolatey Software, Inc. are affiliated with or endorsed by JanDeDobbeleer. The inclusion of JanDeDobbeleer trademark(s), if any, upon this webpage is solely to identify JanDeDobbeleer goods or services and not for commercial purposes.
- 1
- 2
- 3
All Checks are Passing
3 Passing Tests
Deployment Method: Individual Install, Upgrade, & Uninstall
To install Oh-My-Posh, run the following command from the command line or from PowerShell:
To upgrade Oh-My-Posh, run the following command from the command line or from PowerShell:
To uninstall Oh-My-Posh, run the following command from the command line or from PowerShell:
Deployment Method:
This applies to both open source and commercial editions of Chocolatey.
1. Enter Your Internal Repository Url
(this should look similar to https://community.chocolatey.org/api/v2/)
2. Setup Your Environment
1. Ensure you are set for organizational deployment
Please see the organizational deployment guide
2. Get the package into your environment
Option 1: Cached Package (Unreliable, Requires Internet - Same As Community)-
Open Source or Commercial:
- Proxy Repository - Create a proxy nuget repository on Nexus, Artifactory Pro, or a proxy Chocolatey repository on ProGet. Point your upstream to https://community.chocolatey.org/api/v2/. Packages cache on first access automatically. Make sure your choco clients are using your proxy repository as a source and NOT the default community repository. See source command for more information.
- You can also just download the package and push it to a repository Download
-
Open Source
-
Download the package:
Download - Follow manual internalization instructions
-
-
Package Internalizer (C4B)
-
Run: (additional options)
choco download oh-my-posh --internalize --version=2.0.478 --source=https://community.chocolatey.org/api/v2/
-
For package and dependencies run:
choco push --source="'INTERNAL REPO URL'"
- Automate package internalization
-
Run: (additional options)
3. Copy Your Script
choco upgrade oh-my-posh -y --source="'INTERNAL REPO URL'" --version="'2.0.478'" [other options]
See options you can pass to upgrade.
See best practices for scripting.
Add this to a PowerShell script or use a Batch script with tools and in places where you are calling directly to Chocolatey. If you are integrating, keep in mind enhanced exit codes.
If you do use a PowerShell script, use the following to ensure bad exit codes are shown as failures:
choco upgrade oh-my-posh -y --source="'INTERNAL REPO URL'" --version="'2.0.478'"
$exitCode = $LASTEXITCODE
Write-Verbose "Exit code was $exitCode"
$validExitCodes = @(0, 1605, 1614, 1641, 3010)
if ($validExitCodes -contains $exitCode) {
Exit 0
}
Exit $exitCode
- name: Install oh-my-posh
win_chocolatey:
name: oh-my-posh
version: '2.0.478'
source: INTERNAL REPO URL
state: present
See docs at https://docs.ansible.com/ansible/latest/modules/win_chocolatey_module.html.
chocolatey_package 'oh-my-posh' do
action :install
source 'INTERNAL REPO URL'
version '2.0.478'
end
See docs at https://docs.chef.io/resource_chocolatey_package.html.
cChocoPackageInstaller oh-my-posh
{
Name = "oh-my-posh"
Version = "2.0.478"
Source = "INTERNAL REPO URL"
}
Requires cChoco DSC Resource. See docs at https://github.com/chocolatey/cChoco.
package { 'oh-my-posh':
ensure => '2.0.478',
provider => 'chocolatey',
source => 'INTERNAL REPO URL',
}
Requires Puppet Chocolatey Provider module. See docs at https://forge.puppet.com/puppetlabs/chocolatey.
4. If applicable - Chocolatey configuration/installation
See infrastructure management matrix for Chocolatey configuration elements and examples.
This package was approved as a trusted package on 25 Sep 2020.
ConEmu based Powershell theme engine.
Package Specific
This package appends the following lines to your Powershell Profile on Install if they are not already there
- 'Import-Module posh-git' - Enables posh-git (a requirement of oh-my-posh)
- 'Import-Module oh-my-posh' - Enables oh-my-posh
On uninstall, this package removes the following lines from your Powershell profile
- 'Import-Module oh-my-posh' - Enables oh-my-posh
- 'Set-Theme someTheme' - Any Themes set are removed from the profile.
Posh-Git is not disabled on uninstall.
Features
- Easy installation
- Awesome prompt themes for PowerShell
- 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
- posh-git (Must be installed manually or via PowershellGallery)
- PSReadLine ≥ 2.0.0-beta1 (installed during installation) if using Powershell 6+
- Ability to run unsigned scripts.
if($PSVersionTable.PSVersion.Major -gt 5){
$Script:modulePath = Join-Path -Path $env:ProgramFiles -ChildPath "PowerShell\$($PSVersionTable.PSVersion.Major)\Modules\"
}
else{
$Script:modulePath = Join-Path -Path $env:ProgramFiles -ChildPath 'WindowsPowerShell\Modules\'
}
$Script:modulePath = Join-Path $Script:modulePath $env:ChocolateyPackageName
Remove-Item $Script:modulePath -Recurse -Force
#Remove added lines from Profile
if ($PROFILE -and (Test-Path $PROFILE)) {
$oldProfile = @(Get-Content $PROFILE)
$newProfile = @()
foreach($line in $oldProfile) {
if($line -like 'Import-Module posh-git') {
Write-Host "'Import-Module posh-git' was found in your profile but is not being removed."
}
if($line -like 'Import-Module oh-my-posh') {
continue
}
if($line -like 'Set-Theme*') {
Write-Host "'$line' was setting a theme for your profile but is being removed."
continue
}
$newProfile += $line
}
Set-Content -path $profile -value $newProfile -Force
Write-Host "oh-my-posh has been removed from your Powershell profile."
}
else{
Write-Host "No Powershell Profile was found. You may need to undo changes to your Powershell profile manually."
}
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE report PUBLIC "-//JACOCO//DTD Report 1.1//EN" "report.dtd"><report name="Pester (09/25/2020 06:46:05)"><sessioninfo id="this" start="1601016361975" dump="1601016365363" /><package name="Helpers"><class name="Helpers/PoshGit" sourcefilename="PoshGit.ps1"><method name="Format-BranchName" desc="()" line="7"><counter type="INSTRUCTION" missed="3" covered="0" /><counter type="LINE" missed="3" covered="0" /><counter type="METHOD" missed="1" covered="0" /></method><method name="Get-VCSStatus" desc="()" line="14"><counter type="INSTRUCTION" missed="4" covered="0" /><counter type="LINE" missed="4" covered="0" /><counter type="METHOD" missed="1" covered="0" /></method><method name="Get-BranchSymbol" desc="()" line="23"><counter type="INSTRUCTION" missed="11" covered="0" /><counter type="LINE" missed="10" covered="0" /><counter type="METHOD" missed="1" covered="0" /></method><method name="Get-GitRemoteUrl" desc="()" line="40"><counter type="INSTRUCTION" missed="3" covered="0" /><counter type="LINE" missed="3" covered="0" /><counter type="METHOD" missed="1" covered="0" /></method><method name="Get-VcsInfo" desc="()" line="53"><counter type="INSTRUCTION" missed="106" covered="0" /><counter type="LINE" missed="66" covered="0" /><counter type="METHOD" missed="1" covered="0" /></method><method name="<script>" desc="()" line="186"><counter type="INSTRUCTION" missed="0" covered="2" /><counter type="LINE" missed="0" covered="2" /><counter type="METHOD" missed="0" covered="1" /></method><counter type="INSTRUCTION" missed="127" covered="2" /><counter type="LINE" missed="86" covered="2" /><counter type="METHOD" missed="5" covered="1" /><counter type="CLASS" missed="1" covered="0" /></class><class name="Helpers/Prompt" sourcefilename="Prompt.ps1"><method name="Test-IsVanillaWindow" desc="()" line="9"><counter type="INSTRUCTION" missed="7" covered="0" /><counter type="LINE" missed="2" covered="0" /><counter type="METHOD" missed="1" covered="0" /></method><method name="Test-AnsiTerminal" desc="()" line="14"><counter type="INSTRUCTION" missed="1" covered="0" /><counter type="LINE" missed="1" covered="0" /><counter type="METHOD" missed="1" covered="0" /></method><method name="Test-PsCore" desc="()" line="18"><counter type="INSTRUCTION" missed="1" covered="0" /><counter type="LINE" missed="1" covered="0" /><counter type="METHOD" missed="1" covered="0" /></method><method name="Test-Windows" desc="()" line="22"><counter type="INSTRUCTION" missed="0" covered="1" /><counter type="LINE" missed="0" covered="1" /><counter type="METHOD" missed="0" covered="1" /></method><method name="Get-Home" desc="()" line="27"><counter type="INSTRUCTION" missed="1" covered="0" /><counter type="LINE" missed="1" covered="0" /><counter type="METHOD" missed="1" covered="0" /></method><method name="Test-Administrator" desc="()" line="31"><counter type="INSTRUCTION" missed="7" covered="0" /><counter type="LINE" missed="5" covered="0" /><counter type="METHOD" missed="1" covered="0" /></method><method name="Get-ComputerName" desc="()" line="43"><counter type="INSTRUCTION" missed="8" covered="0" /><counter type="LINE" missed="7" covered="0" /><counter type="METHOD" missed="1" covered="0" /></method><method name="Get-Provider" desc="()" line="62"><counter type="INSTRUCTION" missed="1" covered="0" /><counter type="LINE" missed="1" covered="0" /><counter type="METHOD" missed="1" covered="0" /></method><method name="Get-FormattedRootLocation" desc="()" line="72"><counter type="INSTRUCTION" missed="9" covered="0" /><counter type="LINE" missed="9" covered="0" /><counter type="METHOD" missed="1" covered="0" /></method><method name="Test-IsVCSRoot" desc="()" line="95"><counter type="INSTRUCTION" missed="7" covered="0" /><counter type="LINE" missed="1" covered="0" /><counter type="METHOD" missed="1" covered="0" /></method><method name="Get-FullPath" desc="()" line="109"><counter type="INSTRUCTION" missed="10" covered="0" /><counter type="LINE" missed="7" covered="0" /><counter type="METHOD" missed="1" covered="0" /></method><method name="Get-OSPathSeparator" desc="()" line="125"><counter type="INSTRUCTION" missed="1" covered="0" /><counter type="LINE" missed="1" covered="0" /><counter type="METHOD" missed="1" covered="0" /></method><method name="Get-ShortPath" desc="()" line="135"><counter type="INSTRUCTION" missed="31" covered="0" /><counter type="LINE" missed="19" covered="0" /><counter type="METHOD" missed="1" covered="0" /></method><method name="Test-VirtualEnv" desc="()" line="169"><counter type="INSTRUCTION" missed="5" covered="0" /><counter type="LINE" missed="5" covered="0" /><counter type="METHOD" missed="1" covered="0" /></method><method name="Get-VirtualEnvName" desc="()" line="179"><counter type="INSTRUCTION" missed="11" covered="0" /><counter type="LINE" missed="9" covered="0" /><counter type="METHOD" missed="1" covered="0" /></method><method name="Test-NotDefaultUser" desc="()" line="195"><counter type="INSTRUCTION" missed="1" covered="0" /><counter type="LINE" missed="1" covered="0" /><counter type="METHOD" missed="1" covered="0" /></method><method name="Set-CursorForRightBlockWrite" desc="()" line="204"><counter type="INSTRUCTION" missed="5" covered="0" /><counter type="LINE" missed="4" covered="0" /><counter type="METHOD" missed="1" covered="0" /></method><method name="Reset-CursorPosition" desc="()" line="211"><counter type="INSTRUCTION" missed="3" covered="0" /><counter type="LINE" missed="3" covered="0" /><counter type="METHOD" missed="1" covered="0" /></method><method name="Set-CursorUp" desc="()" line="221"><counter type="INSTRUCTION" missed="2" covered="0" /><counter type="LINE" missed="1" covered="0" /><counter type="METHOD" missed="1" covered="0" /></method><method name="Set-Newline" desc="()" line="225"><counter type="INSTRUCTION" missed="1" covered="0" /><counter type="LINE" missed="1" covered="0" /><counter type="METHOD" missed="1" covered="0" /></method><method name="Get-BatteryInfo" desc="()" line="229"><counter type="INSTRUCTION" missed="50" covered="0" /><counter type="LINE" missed="40" covered="0" /><counter type="METHOD" missed="1" covered="0" /></method><method name="<script>" desc="()" line="283"><counter type="INSTRUCTION" missed="0" covered="2" /><counter type="LINE" missed="0" covered="2" /><counter type="METHOD" missed="0" covered="1" /></method><counter type="INSTRUCTION" missed="162" covered="3" /><counter type="LINE" missed="119" covered="3" /><counter type="METHOD" missed="20" covered="2" /><counter type="CLASS" missed="1" covered="0" /></class><sourcefile name="PoshGit.ps1"><line nr="7" mi="1" ci="0" mb="0" cb="0" /><line nr="8" mi="1" ci="0" mb="0" cb="0" /><line nr="10" mi="1" ci="0" mb="0" cb="0" /><line nr="14" mi="1" ci="0" mb="0" cb="0" /><line nr="15" mi="1" ci="0" mb="0" cb="0" /><line nr="16" mi="1" ci="0" mb="0" cb="0" /><line nr="18" mi="1" ci="0" mb="0" cb="0" /><line nr="23" mi="2" ci="0" mb="0" cb="0" /><line nr="24" mi="1" ci="0" mb="0" cb="0" /><line nr="26" mi="1" ci="0" mb="0" cb="0" /><line nr="27" mi="1" ci="0" mb="0" cb="0" /><line nr="28" mi="1" ci="0" mb="0" cb="0" /><line nr="30" mi="1" ci="0" mb="0" cb="0" /><line nr="31" mi="1" ci="0" mb="0" cb="0" /><line nr="33" mi="1" ci="0" mb="0" cb="0" /><line nr="34" mi="1" ci="0" mb="0" cb="0" /><line nr="36" mi="1" ci="0" mb="0" cb="0" /><line nr="40" mi="1" ci="0" mb="0" cb="0" /><line nr="41" mi="1" ci="0" mb="0" cb="0" /><line nr="42" mi="1" ci="0" mb="0" cb="0" /><line nr="53" mi="1" ci="0" mb="0" cb="0" /><line nr="54" mi="1" ci="0" mb="0" cb="0" /><line nr="57" mi="2" ci="0" mb="0" cb="0" /><line nr="59" mi="7" ci="0" mb="0" cb="0" /><line nr="63" mi="1" ci="0" mb="0" cb="0" /><line nr="64" mi="1" ci="0" mb="0" cb="0" /><line nr="67" mi="3" ci="0" mb="0" cb="0" /><line nr="68" mi="1" ci="0" mb="0" cb="0" /><line nr="71" mi="1" ci="0" mb="0" cb="0" /><line nr="72" mi="1" ci="0" mb="0" cb="0" /><line nr="75" mi="1" ci="0" mb="0" cb="0" /><line nr="76" mi="1" ci="0" mb="0" cb="0" /><line nr="79" mi="1" ci="0" mb="0" cb="0" /><line nr="80" mi="1" ci="0" mb="0" cb="0" /><line nr="82" mi="1" ci="0" mb="0" cb="0" /><line nr="83" mi="1" ci="0" mb="0" cb="0" /><line nr="85" mi="1" ci="0" mb="0" cb="0" /><line nr="87" mi="1" ci="0" mb="0" cb="0" /><line nr="89" mi="1" ci="0" mb="0" cb="0" /><line nr="91" mi="5" ci="0" mb="0" cb="0" /><line nr="93" mi="1" ci="0" mb="0" cb="0" /><line nr="95" mi="3" ci="0" mb="0" cb="0" /><line nr="97" mi="1" ci="0" mb="0" cb="0" /><line nr="99" mi="3" ci="0" mb="0" cb="0" /><line nr="104" mi="1" ci="0" mb="0" cb="0" /><line nr="107" mi="1" ci="0" mb="0" cb="0" /><line nr="108" mi="1" ci="0" mb="0" cb="0" /><line nr="109" mi="1" ci="0" mb="0" cb="0" /><line nr="112" mi="2" ci="0" mb="0" cb="0" /><line nr="114" mi="1" ci="0" mb="0" cb="0" /><line nr="115" mi="2" ci="0" mb="0" cb="0" /><line nr="118" mi="1" ci="0" mb="0" cb="0" /><line nr="119" mi="1" ci="0" mb="0" cb="0" /><line nr="121" mi="1" ci="0" mb="0" cb="0" /><line nr="122" mi="3" ci="0" mb="0" cb="0" /><line nr="124" mi="1" ci="0" mb="0" cb="0" /><line nr="125" mi="3" ci="0" mb="0" cb="0" /><line nr="127" mi="1" ci="0" mb="0" cb="0" /><line nr="128" mi="3" ci="0" mb="0" cb="0" /><line nr="131" mi="1" ci="0" mb="0" cb="0" /><line nr="132" mi="3" ci="0" mb="0" cb="0" /><line nr="135" mi="1" ci="0" mb="0" cb="0" /><line nr="136" mi="2" ci="0" mb="0" cb="0" /><line nr="140" mi="1" ci="0" mb="0" cb="0" /><line nr="141" mi="1" ci="0" mb="0" cb="0" /><line nr="142" mi="1" ci="0" mb="0" cb="0" /><line nr="144" mi="1" ci="0" mb="0" cb="0" /><line nr="145" mi="3" ci="0" mb="0" cb="0" /><line nr="147" mi="1" ci="0" mb="0" cb="0" /><line nr="148" mi="3" ci="0" mb="0" cb="0" /><line nr="150" mi="1" ci="0" mb="0" cb="0" /><line nr="151" mi="3" ci="0" mb="0" cb="0" /><line nr="153" mi="1" ci="0" mb="0" cb="0" /><line nr="154" mi="3" ci="0" mb="0" cb="0" /><line nr="158" mi="1" ci="0" mb="0" cb="0" /><line nr="160" mi="1" ci="0" mb="0" cb="0" /><line nr="162" mi="1" ci="0" mb="0" cb="0" /><line nr="164" mi="1" ci="0" mb="0" cb="0" /><line nr="168" mi="1" ci="0" mb="0" cb="0" /><line nr="171" mi="1" ci="0" mb="0" cb="0" /><line nr="172" mi="2" ci="0" mb="0" cb="0" /><line nr="175" mi="1" ci="0" mb="0" cb="0" /><line nr="176" mi="4" ci="0" mb="0" cb="0" /><line nr="179" mi="1" ci="0" mb="0" cb="0" /><line nr="180" mi="1" ci="0" mb="0" cb="0" /><line nr="181" mi="1" ci="0" mb="0" cb="0" /><line nr="186" mi="0" ci="1" mb="0" cb="0" /><line nr="187" mi="0" ci="1" mb="0" cb="0" /><counter type="INSTRUCTION" missed="127" covered="2" /><counter type="LINE" missed="86" covered="2" /><counter type="METHOD" missed="5" covered="1" /><counter type="CLASS" missed="1" covered="0" /></sourcefile><sourcefile name="Prompt.ps1"><line nr="9" mi="6" ci="0" mb="0" cb="0" /><line nr="10" mi="1" ci="0" mb="0" cb="0" /><line nr="14" mi="1" ci="0" mb="0" cb="0" /><line nr="18" mi="1" ci="0" mb="0" cb="0" /><line nr="22" mi="0" ci="1" mb="0" cb="0" /><line nr="27" mi="1" ci="0" mb="0" cb="0" /><line nr="31" mi="1" ci="0" mb="0" cb="0" /><line nr="32" mi="2" ci="0" mb="0" cb="0" /><line nr="34" mi="1" ci="0" mb="0" cb="0" /><line nr="35" mi="1" ci="0" mb="0" cb="0" /><line nr="38" mi="2" ci="0" mb="0" cb="0" /><line nr="43" mi="1" ci="0" mb="0" cb="0" /><line nr="44" mi="1" ci="0" mb="0" cb="0" /><line nr="45" mi="1" ci="0" mb="0" cb="0" /><line nr="47" mi="1" ci="0" mb="0" cb="0" /><line nr="48" mi="1" ci="0" mb="0" cb="0" /><line nr="50" mi="2" ci="0" mb="0" cb="0" /><line nr="52" mi="1" ci="0" mb="0" cb="0" /><line nr="62" mi="1" ci="0" mb="0" cb="0" /><line nr="72" mi="1" ci="0" mb="0" cb="0" /><line nr="74" mi="1" ci="0" mb="0" cb="0" /><line nr="75" mi="1" ci="0" mb="0" cb="0" /><line nr="76" mi="1" ci="0" mb="0" cb="0" /><line nr="77" mi="1" ci="0" mb="0" cb="0" /><line nr="79" mi="1" ci="0" mb="0" cb="0" /><line nr="80" mi="1" ci="0" mb="0" cb="0" /><line nr="82" mi="1" ci="0" mb="0" cb="0" /><line nr="85" mi="1" ci="0" mb="0" cb="0" /><line nr="95" mi="7" ci="0" mb="0" cb="0" /><line nr="109" mi="2" ci="0" mb="0" cb="0" /><line nr="110" mi="2" ci="0" mb="0" cb="0" /><line nr="113" mi="1" ci="0" mb="0" cb="0" /><line nr="114" mi="1" ci="0" mb="0" cb="0" /><line nr="117" mi="2" ci="0" mb="0" cb="0" /><line nr="119" mi="1" ci="0" mb="0" cb="0" /><line nr="121" mi="1" ci="0" mb="0" cb="0" /><line nr="125" mi="1" ci="0" mb="0" cb="0" /><line nr="135" mi="1" ci="0" mb="0" cb="0" /><line nr="137" mi="1" ci="0" mb="0" cb="0" /><line nr="139" mi="2" ci="0" mb="0" cb="0" /><line nr="141" mi="2" ci="0" mb="0" cb="0" /><line nr="142" mi="1" ci="0" mb="0" cb="0" /><line nr="143" mi="2" ci="0" mb="0" cb="0" /><line nr="144" mi="2" ci="0" mb="0" cb="0" /><line nr="145" mi="5" ci="0" mb="0" cb="0" /><line nr="146" mi="1" ci="0" mb="0" cb="0" /><line nr="149" mi="1" ci="0" mb="0" cb="0" /><line nr="152" mi="2" ci="0" mb="0" cb="0" /><line nr="154" mi="1" ci="0" mb="0" cb="0" /><line nr="155" mi="2" ci="0" mb="0" cb="0" /><line nr="156" mi="1" ci="0" mb="0" cb="0" /><line nr="157" mi="2" ci="0" mb="0" cb="0" /><line nr="159" mi="1" ci="0" mb="0" cb="0" /><line nr="160" mi="1" ci="0" mb="0" cb="0" /><line nr="162" mi="1" ci="0" mb="0" cb="0" /><line nr="165" mi="2" ci="0" mb="0" cb="0" /><line nr="169" mi="1" ci="0" mb="0" cb="0" /><line nr="170" mi="1" ci="0" mb="0" cb="0" /><line nr="172" mi="1" ci="0" mb="0" cb="0" /><line nr="173" mi="1" ci="0" mb="0" cb="0" /><line nr="175" mi="1" ci="0" mb="0" cb="0" /><line nr="179" mi="1" ci="0" mb="0" cb="0" /><line nr="180" mi="1" ci="0" mb="0" cb="0" /><line nr="181" mi="2" ci="0" mb="0" cb="0" /><line nr="182" mi="1" ci="0" mb="0" cb="0" /><line nr="183" mi="2" ci="0" mb="0" cb="0" /><line nr="185" mi="1" ci="0" mb="0" cb="0" /><line nr="187" mi="1" ci="0" mb="0" cb="0" /><line nr="189" mi="1" ci="0" mb="0" cb="0" /><line nr="190" mi="1" ci="0" mb="0" cb="0" /><line nr="195" mi="1" ci="0" mb="0" cb="0" /><line nr="204" mi="1" ci="0" mb="0" cb="0" /><line nr="205" mi="1" ci="0" mb="0" cb="0" /><line nr="206" mi="1" ci="0" mb="0" cb="0" /><line nr="207" mi="2" ci="0" mb="0" cb="0" /><line nr="211" mi="1" ci="0" mb="0" cb="0" /><line nr="212" mi="1" ci="0" mb="0" cb="0" /><line nr="213" mi="1" ci="0" mb="0" cb="0" /><line nr="221" mi="2" ci="0" mb="0" cb="0" /><line nr="225" mi="1" ci="0" mb="0" cb="0" /><line nr="229" mi="1" ci="0" mb="0" cb="0" /><line nr="231" mi="1" ci="0" mb="0" cb="0" /><line nr="232" mi="1" ci="0" mb="0" cb="0" /><line nr="234" mi="1" ci="0" mb="0" cb="0" /><line nr="235" mi="1" ci="0" mb="0" cb="0" /><line nr="236" mi="1" ci="0" mb="0" cb="0" /><line nr="237" mi="1" ci="0" mb="0" cb="0" /><line nr="239" mi="1" ci="0" mb="0" cb="0" /><line nr="241" mi="1" ci="0" mb="0" cb="0" /><line nr="242" mi="1" ci="0" mb="0" cb="0" /><line nr="243" mi="1" ci="0" mb="0" cb="0" /><line nr="245" mi="4" ci="0" mb="0" cb="0" /><line nr="246" mi="2" ci="0" mb="0" cb="0" /><line nr="247" mi="1" ci="0" mb="0" cb="0" /><line nr="248" mi="1" ci="0" mb="0" cb="0" /><line nr="250" mi="4" ci="0" mb="0" cb="0" /><line nr="251" mi="2" ci="0" mb="0" cb="0" /><line nr="252" mi="1" ci="0" mb="0" cb="0" /><line nr="253" mi="1" ci="0" mb="0" cb="0" /><line nr="254" mi="1" ci="0" mb="0" cb="0" /><line nr="255" mi="2" ci="0" mb="0" cb="0" /><line nr="256" mi="1" ci="0" mb="0" cb="0" /><line nr="260" mi="1" ci="0" mb="0" cb="0" /><line nr="261" mi="2" ci="0" mb="0" cb="0" /><line nr="262" mi="1" ci="0" mb="0" cb="0" /><line nr="264" mi="1" ci="0" mb="0" cb="0" /><line nr="265" mi="1" ci="0" mb="0" cb="0" /><line nr="266" mi="1" ci="0" mb="0" cb="0" /><line nr="267" mi="1" ci="0" mb="0" cb="0" /><line nr="268" mi="1" ci="0" mb="0" cb="0" /><line nr="269" mi="1" ci="0" mb="0" cb="0" /><line nr="270" mi="1" ci="0" mb="0" cb="0" /><line nr="271" mi="1" ci="0" mb="0" cb="0" /><line nr="272" mi="1" ci="0" mb="0" cb="0" /><line nr="273" mi="1" ci="0" mb="0" cb="0" /><line nr="274" mi="1" ci="0" mb="0" cb="0" /><line nr="275" mi="1" ci="0" mb="0" cb="0" /><line nr="276" mi="1" ci="0" mb="0" cb="0" /><line nr="279" mi="1" ci="0" mb="0" cb="0" /><line nr="280" mi="1" ci="0" mb="0" cb="0" /><line nr="283" mi="0" ci="1" mb="0" cb="0" /><line nr="284" mi="0" ci="1" mb="0" cb="0" /><counter type="INSTRUCTION" missed="162" covered="3" /><counter type="LINE" missed="119" covered="3" /><counter type="METHOD" missed="20" covered="2" /><counter type="CLASS" missed="1" covered="0" /></sourcefile><counter type="INSTRUCTION" missed="289" covered="5" /><counter type="LINE" missed="205" covered="5" /><counter type="METHOD" missed="25" covered="3" /><counter type="CLASS" missed="2" covered="0" /></package><counter type="INSTRUCTION" missed="289" covered="5" /><counter type="LINE" missed="205" covered="5" /><counter type="METHOD" missed="25" covered="3" /><counter type="CLASS" missed="2" covered="0" /></report>
# Oh-My-Posh default settings
function Get-ThemesLocation {
$folderName = "PoshThemes"
if ($PROFILE) {
return (Join-Path (Split-Path -Parent $PROFILE) $folderName)
}
return "~\${$folderName}"
}
$global:ThemeSettings = New-Object -TypeName PSObject -Property @{
CurrentUser = [System.Environment]::UserName
CurrentHostname = [System.Environment]::MachineName
CurrentThemeLocation = "$PSScriptRoot\Themes\Agnoster.psm1"
MyThemesLocation = Get-ThemesLocation
ErrorCount = 0
GitSymbols = @{
BranchSymbol = [char]::ConvertFromUtf32(0xE0A0)
BeforeStashSymbol = '{'
BeforeIndexSymbol = ''
BeforeWorkingSymbol = ''
AfterStashSymbol = '}'
DelimSymbol = '|'
LocalWorkingStatusSymbol = '!'
LocalStagedStatusSymbol = '~'
LocalDefaultStatusSymbol = ''
BranchUntrackedSymbol = [char]::ConvertFromUtf32(0x2262)
BranchIdenticalStatusToSymbol = [char]::ConvertFromUtf32(0x2263)
BranchAheadStatusSymbol = [char]::ConvertFromUtf32(0x2191)
BranchBehindStatusSymbol = [char]::ConvertFromUtf32(0x2193)
OriginSymbols = @{
Github = [char]::ConvertFromUtf32(0xF09B)
Bitbucket = [char]::ConvertFromUtf32(0xF171)
GitLab = [char]::ConvertFromUtf32(0xF296)
}
}
PromptSymbols = @{
StartSymbol = ' '
TruncatedFolderSymbol = '..'
PromptIndicator = [char]::ConvertFromUtf32(0x25B6)
FailedCommandSymbol = [char]::ConvertFromUtf32(0x2A2F)
ElevatedSymbol = [char]::ConvertFromUtf32(0x26A1)
SegmentForwardSymbol = [char]::ConvertFromUtf32(0xE0B0)
SegmentBackwardSymbol = [char]::ConvertFromUtf32(0x26A1)
SegmentSeparatorForwardSymbol = [char]::ConvertFromUtf32(0x26A1)
SegmentSeparatorBackwardSymbol = [char]::ConvertFromUtf32(0x26A1)
PathSeparator = [System.IO.Path]::DirectorySeparatorChar
VirtualEnvSymbol = [char]::ConvertFromUtf32(0xE606)
HomeSymbol = '~'
RootSymbol = '#'
UNCSymbol = '§'
}
Colors = @{
GitDefaultColor = [ConsoleColor]::DarkGreen
GitLocalChangesColor = [ConsoleColor]::DarkYellow
GitNoLocalChangesAndAheadColor = [ConsoleColor]::DarkMagenta
GitNoLocalChangesAndBehindColor = [ConsoleColor]::DarkRed
GitNoLocalChangesAndAheadAndBehindColor = [ConsoleColor]::DarkRed
PromptForegroundColor = [ConsoleColor]::White
PromptHighlightColor = [ConsoleColor]::DarkBlue
DriveForegroundColor = [ConsoleColor]::DarkBlue
PromptBackgroundColor = [ConsoleColor]::DarkBlue
PromptSymbolColor = [ConsoleColor]::White
SessionInfoBackgroundColor = [ConsoleColor]::Black
SessionInfoForegroundColor = [ConsoleColor]::White
CommandFailedIconForegroundColor = [ConsoleColor]::DarkRed
AdminIconForegroundColor = [ConsoleColor]::DarkYellow
WithBackgroundColor = [ConsoleColor]::DarkRed
WithForegroundColor = [ConsoleColor]::White
GitForegroundColor = [ConsoleColor]::Black
VirtualEnvForegroundColor = [ConsoleColor]::White
VirtualEnvBackgroundColor = [ConsoleColor]::Red
}
Options = @{
ConsoleTitle = $true
OriginSymbols = $false
PreserveLastExitCode = $true
}
}
# PSColor default settings
$global:PSColor = @{
File = @{
Default = @{ Color = 'White' }
Directory = @{ Color = 'DarkBlue' }
Hidden = @{ Color = 'Gray'; Pattern = '^\.' }
Code = @{ Color = 'Magenta'; Pattern = '\.(java|c|cpp|cs|js|css|html)$' }
Executable = @{ Color = 'Red'; Pattern = '\.(exe|bat|cmd|py|pl|ps1|psm1|vbs|rb|reg)$' }
Text = @{ Color = 'White'; Pattern = '\.(txt|cfg|conf|ini|csv|log|config|xml|yml|md|markdown)$' }
Compressed = @{ Color = 'DarkGreen'; Pattern = '\.(zip|tar|gz|rar|jar|war)$' }
}
Service = @{
Default = @{ Color = 'White' }
Running = @{ Color = 'DarkGreen' }
Stopped = @{ Color = 'DarkYellow' }
}
Match = @{
Default = @{ Color = 'White' }
Path = @{ Color = 'Cyan' }
LineNumber = @{ Color = 'DarkGreen' }
Line = @{ Color = 'White' }
}
}
function Format-BranchName {
param(
[string]
$branchName
)
if($spg.BranchNameLimit -gt 0 -and $branchName.Length -gt $spg.BranchNameLimit) {
$branchName = ' {0}{1} ' -f $branchName.Substring(0, $spg.BranchNameLimit), $spg.TruncatedBranchSuffix
}
return " $branchName "
}
function Get-VCSStatus {
if (Get-Command Get-GitStatus -errorAction SilentlyContinue) {
$global:GitStatus = Get-GitStatus
return $global:GitStatus
}
return $null
}
function Get-BranchSymbol($upstream) {
# Add remote icon instead of branchsymbol if Enabled
if (-not ($upstream) -or !$sl.Options.OriginSymbols) {
return $sl.GitSymbols.BranchSymbol
}
$originUrl = Get-GitRemoteUrl $upstream
if ($originUrl.Contains("github")) {
return $sl.GitSymbols.OriginSymbols.Github
}
elseif ($originUrl.Contains("bitbucket")) {
return $sl.GitSymbols.OriginSymbols.Bitbucket
}
elseif ($originUrl.Contains("gitlab")) {
return $sl.GitSymbols.OriginSymbols.GitLab
}
return $sl.GitSymbols.BranchSymbol
}
function Get-GitRemoteUrl($upstream) {
$origin = $upstream -replace "/.*"
$originUrl = git remote get-url $origin
return $originUrl
}
function Get-VcsInfo {
param(
[Object]
$status,
[Parameter(Mandatory=$false)][Int] $branchNameMaxLength
)
if ($status) {
$branchStatusBackgroundColor = $sl.Colors.GitDefaultColor
# Determine Colors
$localChanges = ($status.HasIndex -or $status.HasUntracked -or $status.HasWorking)
#Git flags
$localChanges = $localChanges -or (($status.Untracked -gt 0) -or ($status.Added -gt 0) -or ($status.Modified -gt 0) -or ($status.Deleted -gt 0) -or ($status.Renamed -gt 0))
#hg/svn flags
# There are local changes
if($localChanges) {
$branchStatusBackgroundColor = $sl.Colors.GitLocalChangesColor
}
# There are no local changes and the current branch is both ahead and behind
elseif(($status.AheadBy -gt 0) -and ($status.BehindBy -gt 0)) {
$branchStatusBackgroundColor = $sl.Colors.GitNoLocalChangesAndAheadAndBehindColor
}
# There are no local changes and the current branch is ahead only
elseif ($status.AheadBy -gt 0) {
$branchStatusBackgroundColor = $sl.Colors.GitNoLocalChangesAndAheadColor
}
# There are no local changes and the current branch is behind only
elseif($status.BehindBy -gt 0) {
$branchStatusBackgroundColor = $sl.Colors.GitNoLocalChangesAndBehindColor
}
$vcInfo = Get-BranchSymbol $status.Upstream
$branchStatusSymbol = $null
if (!$status.Upstream) {
$branchStatusSymbol = $sl.GitSymbols.BranchUntrackedSymbol
}
elseif ($status.BehindBy -eq 0 -and $status.AheadBy -eq 0) {
# We are aligned with remote
$branchStatusSymbol = $sl.GitSymbols.BranchIdenticalStatusToSymbol
}
elseif ($status.BehindBy -ge 1 -and $status.AheadBy -ge 1) {
# We are both behind and ahead of remote
$branchStatusSymbol = "$($sl.GitSymbols.BranchAheadStatusSymbol)$($status.AheadBy) $($sl.GitSymbols.BranchBehindStatusSymbol)$($status.BehindBy)"
}
elseif ($status.BehindBy -ge 1) {
# We are behind remote
$branchStatusSymbol = "$($sl.GitSymbols.BranchBehindStatusSymbol)$($status.BehindBy)"
}
elseif ($status.AheadBy -ge 1) {
# We are ahead of remote
$branchStatusSymbol = "$($sl.GitSymbols.BranchAheadStatusSymbol)$($status.AheadBy)"
}
else
{
# This condition should not be possible but defaulting the variables to be safe
$branchStatusSymbol = '?'
}
$branchName = $status.Branch
if ($branchNameMaxLength -and $branchName.Length -gt $branchNameMaxLength) {
$branchName = $branchName.Substring(0, $branchNameMaxLength);
}
$vcInfo = $vcInfo + (Format-BranchName -branchName $branchName)
if ($branchStatusSymbol) {
$vcInfo = $vcInfo + ('{0} ' -f $branchStatusSymbol)
}
if($spg.EnableFileStatus -and $status.HasIndex) {
$vcInfo = $vcInfo + $sl.GitSymbols.BeforeIndexSymbol
if($spg.ShowStatusWhenZero -or $status.Index.Added) {
$vcInfo = $vcInfo + "$($spg.FileAddedText)$($status.Index.Added.Count) "
}
if($spg.ShowStatusWhenZero -or $status.Index.Modified) {
$vcInfo = $vcInfo + "$($spg.FileModifiedText)$($status.Index.Modified.Count) "
}
if($spg.ShowStatusWhenZero -or $status.Index.Deleted) {
$vcInfo = $vcInfo + "$($spg.FileRemovedText)$($status.Index.Deleted.Count) "
}
if ($status.Index.Unmerged) {
$vcInfo = $vcInfo + "$($spg.FileConflictedText)$($status.Index.Unmerged.Count) "
}
if($status.HasWorking) {
$vcInfo = $vcInfo + "$($sl.GitSymbols.DelimSymbol) "
}
}
if($spg.EnableFileStatus -and $status.HasWorking) {
if (!$status.HasIndex) {
$vcInfo = $vcInfo + $sl.GitSymbols.BeforeWorkingSymbol
}
if($spg.showStatusWhenZero -or $status.Working.Added) {
$vcInfo = $vcInfo + "$($spg.FileAddedText)$($status.Working.Added.Count) "
}
if($spg.ShowStatusWhenZero -or $status.Working.Modified) {
$vcInfo = $vcInfo + "$($spg.FileModifiedText)$($status.Working.Modified.Count) "
}
if($spg.ShowStatusWhenZero -or $status.Working.Deleted) {
$vcInfo = $vcInfo + "$($spg.FileRemovedText)$($status.Working.Deleted.Count) "
}
if ($status.Working.Unmerged) {
$vcInfo = $vcInfo + "$($spg.FileConflictedText)$($status.Working.Unmerged.Count) "
}
}
if ($status.HasWorking) {
# We have un-staged files in the working tree
$localStatusSymbol = $sl.GitSymbols.LocalWorkingStatusSymbol
}
elseif ($status.HasIndex) {
# We have staged but uncommited files
$localStatusSymbol = $sl.GitSymbols.LocalStagedStatusSymbol
}
else {
# No uncommited changes
$localStatusSymbol = $sl.GitSymbols.LocalDefaultStatusSymbol
}
if ($localStatusSymbol) {
$vcInfo = $vcInfo + ('{0} ' -f $localStatusSymbol)
}
if ($status.StashCount -gt 0) {
$vcInfo = $vcInfo + "$($sl.GitSymbols.BeforeStashSymbol)$($status.StashCount)$($sl.GitSymbols.AfterStashSymbol) "
}
return New-Object PSObject -Property @{
BackgroundColor = $branchStatusBackgroundColor
VcInfo = $vcInfo.Trim()
}
}
}
$spg = $global:GitPromptSettings #Posh-Git settings
$sl = $global:ThemeSettings #local settings
$global:ThemeSettings = New-Object -TypeName PSObject -Property @{
GitSymbols = @{
BranchSymbol = 'branch'
OriginSymbols = @{
Github = [char]::ConvertFromUtf32(0xF09B)
Bitbucket = [char]::ConvertFromUtf32(0xF171)
GitLab = [char]::ConvertFromUtf32(0xF296)
}
}
Options = @{
OriginSymbols = $false
}
}
$here = Split-Path -Parent $MyInvocation.MyCommand.Path
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
. "$here\$sut"
Describe "Test-GetBranchSymbol" {
Context "Is disabled" {
BeforeAll {
$global:ThemeSettings.Options.OriginSymbols = $false
}
It "Has Enabled set to False" {
Mock Get-GitRemoteUrl { return 'github.com/test.git' }
$symbol = Get-BranchSymbol 'origin/master'
$symbol | Should Be $themeSettings.GitSymbols.BranchSymbol
}
It "Has has no upstream" {
$symbol = Get-BranchSymbol
$symbol | Should Be $themeSettings.GitSymbols.BranchSymbol
}
}
Context "Is enabled" {
BeforeAll {
$global:ThemeSettings.Options.OriginSymbols = $true
}
It "Uses GitHub" {
Mock Get-GitRemoteUrl { return 'github.com/test.git' }
$symbol = Get-BranchSymbol 'origin/master'
$symbol | Should Be $themeSettings.GitSymbols.OriginSymbols.Github
}
It "Uses GitLab" {
Mock Get-GitRemoteUrl { return 'gitlab.com/test.git' }
$symbol = Get-BranchSymbol 'origin/master'
$symbol | Should Be $themeSettings.GitSymbols.OriginSymbols.GitLab
}
It "Uses BitBucket" {
Mock Get-GitRemoteUrl { return 'bitbucket.com/test.git' }
$symbol = Get-BranchSymbol 'origin/master'
$symbol | Should Be $themeSettings.GitSymbols.OriginSymbols.Bitbucket
}
It "Uses something else" {
Mock Get-GitRemoteUrl { return 'example.com/test.git' }
$symbol = Get-BranchSymbol 'origin/master'
$symbol | Should Be $themeSettings.GitSymbols.BranchSymbol
}
It "Has no remote" {
$symbol = Get-BranchSymbol
$symbol | Should Be $themeSettings.GitSymbols.BranchSymbol
}
}
}
<#
.SYNOPSIS
Defines whether or not the current terminal supports ANSI characters
.DESCRIPTION
Logic taken from posh-git that sets the $GitPromptSettings.AnsiConsole bool:
[bool]$AnsiConsole = $Host.UI.SupportsVirtualTerminal -or ($Env:ConEmuANSI -eq "ON")
#>
function Test-IsVanillaWindow {
$hasAnsiSupport = (Test-AnsiTerminal) -or ($Env:ConEmuANSI -eq "ON") -or ($env:PROMPT) -or ($env:TERM_PROGRAM -eq "Hyper") -or ($env:TERM_PROGRAM -eq "vscode")
return !$hasAnsiSupport
}
function Test-AnsiTerminal {
return $Host.UI.SupportsVirtualTerminal
}
function Test-PsCore {
return $PSVersionTable.PSVersion.Major -gt 5
}
function Test-Windows {
$PSVersionTable.Platform -ne 'Unix'
}
function Get-Home {
# On Unix systems, $HOME comes with a trailing slash, unlike the Windows variant
return $HOME.TrimEnd('/', '\')
}
function Test-Administrator {
if ($PSVersionTable.Platform -eq 'Unix') {
return (whoami) -eq 'root'
}
elseif ($PSVersionTable.Platform -eq 'Windows') {
return $false #TO-DO: find out how to distinguish this one
}
else {
return ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] 'Administrator')
}
}
function Get-ComputerName {
if (Test-PsCore -And -Not Test-Windows) {
if ($env:COMPUTERNAME) {
return $env:COMPUTERNAME
}
if ($env:NAME) {
return $env:NAME
}
return (uname -n)
}
return $env:COMPUTERNAME
}
function Get-Provider {
param(
[Parameter(Mandatory = $true)]
[System.Management.Automation.PathInfo]
$dir
)
return $dir.Provider.Name
}
function Get-FormattedRootLocation {
param(
[Parameter(Mandatory = $true)]
[System.Management.Automation.PathInfo]
$dir
)
$provider = Get-Provider -dir $dir
if ($provider -eq 'FileSystem') {
$homedir = Get-Home
if ($dir.Path.StartsWith($homedir)) {
return $sl.PromptSymbols.HomeSymbol
}
if ($dir.Path.StartsWith('Microsoft.PowerShell.Core')) {
return $sl.PromptSymbols.UNCSymbol
}
return ''
}
else {
return $dir.Drive.Name
}
}
function Test-IsVCSRoot {
param(
[System.String]
$Path
)
return (Test-Path -LiteralPath "$($Path)\.git") -Or (Test-Path -LiteralPath "$($Path)\.hg") -Or (Test-Path -LiteralPath "$($Path)\.svn")
}
function Get-FullPath {
param(
[Parameter(Mandatory = $true)]
[System.Management.Automation.PathInfo]
$dir,
[Parameter(Mandatory = $false)]
[switch]
$noHomeAbbreviation
)
if ($dir.path -eq "$($dir.Drive.Name):\") {
return "$($dir.Drive.Name):"
}
if ($noHomeAbbreviation.IsPresent) {
$path = $dir.path
}
else {
$path = $dir.path.Replace((Get-Home), $sl.PromptSymbols.HomeSymbol)
}
$path = $path.Replace('\', $sl.PromptSymbols.PathSeparator)
return $path
}
function Get-OSPathSeparator {
return [System.IO.Path]::DirectorySeparatorChar
}
function Get-ShortPath {
param(
[Parameter(Mandatory = $true)]
[System.Management.Automation.PathInfo]
$dir
)
$provider = Get-Provider -dir $dir
if ($provider -eq 'FileSystem') {
# on UNIX systems, a trailing slash can be present, yet when calling $HOME there isn't one
$path = $dir.Path.TrimEnd((Get-OSPathSeparator))
# list known paths and their substitutes
$knownPaths = (Get-Home), 'Microsoft.PowerShell.Core\FileSystem::'
$result = @()
while ($path -And -Not ($knownPaths.Contains($path))) {
$folder = $path.Split((Get-OSPathSeparator))[-1]
if ( (Test-IsVCSRoot -Path $path) -Or ($result.length -eq 0) -Or -Not ($path.Contains((Get-OSPathSeparator)))) {
$result = , $folder + $result
}
else {
$result = , $sl.PromptSymbols.TruncatedFolderSymbol + $result
}
# remove the last element
$path = $path.TrimEnd($folder).TrimEnd((Get-OSPathSeparator))
}
$shortPath = $result -join $sl.PromptSymbols.PathSeparator
$rootLocation = (Get-FormattedRootLocation -dir $dir)
if ($rootLocation -and $shortPath) {
return "$rootLocation$($sl.PromptSymbols.PathSeparator)$shortPath"
}
if ($rootLocation) {
return $rootLocation
}
return $shortPath
}
else {
return $dir.path.Replace((Get-FormattedRootLocation -dir $dir), '')
}
}
function Test-VirtualEnv {
if ($env:VIRTUAL_ENV) {
return $true
}
if ($Env:CONDA_PROMPT_MODIFIER) {
return $true
}
return $false
}
function Get-VirtualEnvName {
if ($env:VIRTUAL_ENV) {
if ($PSVersionTable.Platform -eq 'Unix') {
$virtualEnvName = ($env:VIRTUAL_ENV -split '/')[-1]
} elseif ($PSVersionTable.Platform -eq 'Win32NT' -or $PSEdition -eq 'Desktop') {
$virtualEnvName = ($env:VIRTUAL_ENV -split '\\')[-1]
} else {
$virtualEnvName = $env:VIRTUAL_ENV
}
return $virtualEnvName.Trim('[\/]')
}
elseif ($Env:CONDA_PROMPT_MODIFIER) {
[regex]::Match($Env:CONDA_PROMPT_MODIFIER, "^\((.*)\)").Captures.Groups[1].Value;
}
}
function Test-NotDefaultUser($user) {
return $null -eq $DefaultUser -or $user -ne $DefaultUser
}
function Set-CursorForRightBlockWrite {
param(
[int]
$textLength
)
$rawUI = $Host.UI.RawUI
$width = $rawUI.BufferSize.Width
$space = $width - $textLength
Write-Prompt "$escapeChar[$($space)G"
}
function Reset-CursorPosition {
$postion = $host.UI.RawUI.CursorPosition
$postion.X = 0
$host.UI.RawUI.CursorPosition = $postion
}
function Set-CursorUp {
param(
[int]
$lines
)
return "$escapeChar[$($lines)A"
}
function Set-Newline {
return Write-Prompt "`n"
}
function Get-BatteryInfo {
if ($env:OS -eq 'Windows_NT' -or $IsWindows) {
$batteryclass = Get-CimInstance win32_battery
if (!$batteryclass) { return }
$powerclass = Get-CimInstance -Class batterystatus -Namespace root\wmi
$charge = $batteryclass.EstimatedChargeRemaining
$connected = $powerclass.PowerOnline
$charging = $powerclass.Charging
} elseif ($IsLinux) {
$syspath = "/sys/class/power_supply/"
$syspathcontents = Get-ChildItem $syspath
if (!$syspathcontents) { return }
$powerclass = ($syspathcontents | Where-Object { $_.Name -like 'AC*' }).Name
if ($powerclass -is [Object[]]) { $powerdevice = $syspath + $powerclass[-1] }
else { $powerdevice = $syspath + $powerclass }
$connected = Get-Content "$powerdevice/online"
$batteryclass = ($syspathcontents | Where-Object { $_.Name -like 'BAT*' }).Name
if ($batteryclass -is [Object[]]) { $batterydevice = $syspath + $batteryclass[-1] }
else { $batterydevice = $syspath + $batteryclass }
$charge = Get-Content "$batterydevice/capacity"
$chargestatus = Get-Content "$batterydevice/status"
if ($chargestatus -eq "Charging" -or $chargestatus -eq "Full") { $charging = 1 }
else { $charging = 0 }
} else { return }
if ($connected) {
if ($charging) { $batteryhex = 0xf583 }
else { $batteryhex = 0xf582 }
} else {
[int]$level = $charge / 10
switch ($level) {
0 { $batteryhex = 0xf58d }
1 { $batteryhex = 0xf579 }
2 { $batteryhex = 0xf57a }
3 { $batteryhex = 0xf57b }
4 { $batteryhex = 0xf57c }
5 { $batteryhex = 0xf57d }
6 { $batteryhex = 0xf57e }
7 { $batteryhex = 0xf57f }
8 { $batteryhex = 0xf580 }
9 { $batteryhex = 0xf581 }
Default { $batteryhex = 0xf578 }
}
}
$battery = [char]::ConvertFromUtf32($batteryhex)
return "$charge% $battery"
}
$escapeChar = [char]27
$sl = $global:ThemeSettings #local settings
$global:ThemeSettings = New-Object -TypeName PSObject -Property @{
CurrentThemeLocation = "$PSScriptRoot\Themes\Agnoster.psm1"
MyThemesLocation = '~\Documents\WindowsPowerShell\PoshThemes'
ErrorCount = 0
PromptSymbols = @{
StartSymbol = ' '
TruncatedFolderSymbol = '..'
PromptIndicator = '>'
FailedCommandSymbol = 'x'
ElevatedSymbol = '!'
SegmentForwardSymbol = '>'
SegmentBackwardSymbol = '<'
SegmentSeparatorForwardSymbol = '>'
SegmentSeparatorBackwardSymbol = '<'
PathSeparator = '\'
HomeSymbol = '*'
RootSymbol = '#'
UNCSymbol = '§'
}
}
$here = Split-Path -Parent $MyInvocation.MyCommand.Path
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
. "$here\$sut"
function New-MockPath {
param (
[Parameter(Mandatory = $true)]
[System.String]
$Location,
[Parameter(Mandatory = $true)]
[System.String]
$ProviderName,
[Parameter(Mandatory = $false)]
[System.String]
$DriveName
)
$provider = New-MockObject -Type System.Management.Automation.ProviderInfo
$path = New-MockObject -Type System.Management.Automation.PathInfo
$provider | Add-Member -Type NoteProperty -Name 'Name' -Value $ProviderName -Force
$path | Add-Member -Type NoteProperty -Name 'Path' -Value $Location -Force
$path | Add-Member -Type NoteProperty -Name 'Provider' -Value $provider -Force
if ($null -ne $DriveName) {
$driveInfo = New-MockObject -Type System.Management.Automation.PSDriveInfo
$driveInfo | Add-Member -Type NoteProperty -Name 'Name' -Value $DriveName -Force
$path | Add-Member -Type NoteProperty -Name 'Drive' -Value $driveInfo -Force
}
return $path
}
Describe "Test-IsVanillaWindow" {
BeforeEach { Remove-Item Env:\ConEmuANSI -ErrorAction SilentlyContinue
Remove-Item Env:\PROMPT -ErrorAction SilentlyContinue
Remove-Item Env:\TERM_PROGRAM -ErrorAction SilentlyContinue }
Context "Running in a non-vanilla window" {
It "runs in ConEmu and outputs 'false'" {
$env:ConEmuANSI = "ON"
Mock Test-AnsiTerminal { return $false }
Test-IsVanillaWindow | Should Be $false
}
It "runs in ConEmu and outputs 'false'" {
$env:ConEmuANSI = "ON"
Mock Test-AnsiTerminal { return $true }
Test-IsVanillaWindow | Should Be $false
}
It "runs in an ANSI supported terminal and outputs 'false'" {
$env:ConEmuANSI = $false
Mock Test-AnsiTerminal { return $true }
Test-IsVanillaWindow | Should Be $false
}
It "runs in ConEmu and outputs 'false'" {
$env:ConEmuANSI = $true
Test-IsVanillaWindow | Should Be $false
}
It "runs in cmder and outputs 'false'" {
$env:PROMPT = $true
Mock Test-AnsiTerminal { return $false }
Test-IsVanillaWindow | Should Be $false
}
It "runs in cmder and conemu and outputs 'false'" {
$env:PROMPT = $true
$env:ConEmuANSI = $true
Mock Test-AnsiTerminal { return $false }
Test-IsVanillaWindow | Should Be $false
}
It "runs in Hyper.js and outputs 'false'" {
$env:TERM_PROGRAM = "Hyper"
Mock Test-AnsiTerminal { return $false }
Test-IsVanillaWindow | Should Be $false
}
It "runs in vscode and outputs 'false'" {
$env:TERM_PROGRAM = "vscode"
Mock Test-AnsiTerminal { return $false }
Test-IsVanillaWindow | Should Be $false
}
}
Context "Running in a vanilla window" {
It "runs in a vanilla window and outputs 'true'" {
Mock Test-AnsiTerminal { return $false }
Test-IsVanillaWindow | Should Be $true
}
}
}
Describe "Get-Home" {
It "returns $($HOME.TrimEnd('/','\'))" {
Get-Home | Should Be $HOME.TrimEnd('/', '\')
}
}
Describe "Get-Provider" {
It "uses the provider 'AwesomeSauce'" {
$expected = 'AwesomeSauce'
$path = New-MockPath -Location 'C:\Users\Jan\Test' -ProviderName $expected
Get-Provider $path | Should Be $expected
}
}
Describe "Get-FormattedRootLocation" {
Context "Running in the FileSystem" {
BeforeAll {
Mock Get-Home { return 'C:\Users\Jan' }
Mock Test-Windows { return $true }
}
It "is in the $HOME folder" {
$path = New-MockPath -Location 'C:\Users\Jan' -ProviderName 'FileSystem' -DriveName 'C'
Get-FormattedRootLocation $path | Should Be $ThemeSettings.PromptSymbols.HomeSymbol
}
It "is somewhere in the $HOME folder" {
$path = New-MockPath -Location 'C:\Users\Jan\Git\Somewhere' -ProviderName 'FileSystem' -DriveName 'C'
Get-FormattedRootLocation $path | Should Be $ThemeSettings.PromptSymbols.HomeSymbol
}
It "is in 'Microsoft.PowerShell.Core\FileSystem::\\Test\Hello' with Drive X:" {
$path = New-MockPath -Location 'Microsoft.PowerShell.Core\FileSystem::\\Test\Hello' -ProviderName 'FileSystem' -DriveName 'X'
Get-FormattedRootLocation $path | Should Be $ThemeSettings.PromptSymbols.UNCSymbol
}
It "is in C:" {
$path = New-MockPath -Location 'C:\Documents' -ProviderName 'FileSystem' -DriveName 'C'
Get-FormattedRootLocation $path | Should Be ''
}
It "is has no drive" {
$path = New-MockPath -Location 'J:\Test\Folder\Somewhere' -ProviderName 'FileSystem' -DriveName 'J'
Get-FormattedRootLocation $path | Should Be ''
}
It "is has no valid path" {
if (Test-PsCore) {
$true | Should Be $true
}
else {
$path = New-MockPath -Location 'J\Test\Folder\Somewhere' -ProviderName 'FileSystem' -DriveName 'J'
Get-FormattedRootLocation $path | Should Be 'J:'
}
}
}
Context "Running outside of the FileSystem" {
It "running outside of the Filesystem in L:" {
$path = New-MockPath -Location 'L:\Documents\Somewhere' -ProviderName 'SomewhereElse' -DriveName 'L'
Get-FormattedRootLocation $path | Should Be 'L'
}
}
}
Describe "Get-FullPath" {
Context "Running in the FileSystem" {
BeforeAll { Mock Get-Home { return 'C:\Users\Jan' } }
It "is in the $HOME folder" {
$path = New-MockPath -Location 'C:\Users\Jan' -ProviderName 'FileSystem' -DriveName 'C'
Get-FullPath $path | Should Be $ThemeSettings.PromptSymbols.HomeSymbol
}
It "is somewhere in the $HOME folder" {
$path = New-MockPath -Location 'C:\Users\Jan\Git\Somewhere' -ProviderName 'FileSystem' -DriveName 'C'
Get-FullPath $path | Should Be "$($ThemeSettings.PromptSymbols.HomeSymbol)\Git\Somewhere"
}
}
}
Describe "Get-ShortPath" {
if (Test-Windows) {
Context "Running in the FileSystem on Windows" {
BeforeAll {
Mock Get-Home { return 'C:\Users\Jan' }
Mock Get-OSPathSeparator { return '\' }
}
It "is in a root folder" {
$path = New-MockPath -Location 'C:\Users\' -ProviderName 'FileSystem' -DriveName 'C'
Get-ShortPath $path | Should Be "C:$($ThemeSettings.PromptSymbols.PathSeparator)Users"
}
It "is outside the $HOME folder" {
$path = New-MockPath -Location 'C:\Tools\Something' -ProviderName 'FileSystem' -DriveName 'C'
Get-ShortPath $path | Should Be "C:$($ThemeSettings.PromptSymbols.PathSeparator)$($ThemeSettings.PromptSymbols.TruncatedFolderSymbol)$($ThemeSettings.PromptSymbols.PathSeparator)Something"
}
It "is in the $HOME folder" {
$path = New-MockPath -Location 'C:\Users\Jan\' -ProviderName 'FileSystem' -DriveName 'C'
Get-ShortPath $path | Should Be $ThemeSettings.PromptSymbols.HomeSymbol
}
It "is somewhere in the $HOME folder" {
$path = New-MockPath -Location 'C:\Users\Jan\Git\Somewhere' -ProviderName 'FileSystem' -DriveName 'C'
Get-ShortPath $path | Should Be "$($ThemeSettings.PromptSymbols.HomeSymbol)$($ThemeSettings.PromptSymbols.PathSeparator)$($ThemeSettings.PromptSymbols.TruncatedFolderSymbol)$($ThemeSettings.PromptSymbols.PathSeparator)Somewhere"
}
It "is in 'Microsoft.PowerShell.Core\FileSystem::\\Test\Hello'" {
$path = New-MockPath -Location 'Microsoft.PowerShell.Core\FileSystem::\\Test\Hello' -ProviderName 'FileSystem' -DriveName 'Microsoft.PowerShell.Core'
Get-ShortPath $path | Should Be "$($ThemeSettings.PromptSymbols.UNCSymbol)$($ThemeSettings.PromptSymbols.PathSeparator)$($ThemeSettings.PromptSymbols.TruncatedFolderSymbol)$($ThemeSettings.PromptSymbols.PathSeparator)Hello"
}
}
}
if (-Not (Test-Windows)) {
Context "Running on the filesystem in UNIX" {
BeforeAll {
Mock Get-Home { return '/Users/Jan' }
Mock Get-OSPathSeparator { return '/' }
}
It "is outside the $HOME folder" {
$path = New-MockPath -Location 'C:/Tools/Something' -ProviderName 'FileSystem' -DriveName 'C'
Get-ShortPath $path | Should Be "C:$($ThemeSettings.PromptSymbols.PathSeparator)$($ThemeSettings.PromptSymbols.TruncatedFolderSymbol)$($ThemeSettings.PromptSymbols.PathSeparator)Something"
}
It "is in a root folder" {
$path = New-MockPath -Location '/Users/' -ProviderName 'FileSystem' -DriveName '/'
Get-ShortPath $path | Should Be 'Users'
}
It "is in the $HOME folder" {
$path = New-MockPath -Location '/Users/Jan/' -ProviderName 'FileSystem' -DriveName '/'
Get-ShortPath $path | Should Be $ThemeSettings.PromptSymbols.HomeSymbol
}
It "is somewhere in the $HOME folder" {
$path = New-MockPath -Location '/Users/Jan/Git/Somewhere' -ProviderName 'FileSystem' -DriveName '/'
Get-ShortPath $path | Should Be "$($ThemeSettings.PromptSymbols.HomeSymbol)$($ThemeSettings.PromptSymbols.PathSeparator)$($ThemeSettings.PromptSymbols.TruncatedFolderSymbol)$($ThemeSettings.PromptSymbols.PathSeparator)Somewhere"
}
}
}
}
Describe "Test-NotDefaultUser" {
Context "With default user set" {
BeforeAll { $DefaultUser = 'name' }
It "same username gives 'false'" {
$user = 'name'
Test-NotDefaultUser($user) | Should Be $false
}
It "different username gives 'false'" {
$user = 'differentName'
Test-NotDefaultUser($user) | Should Be $true
}
It "same username and outside VirtualEnv gives 'false'" {
Mock Test-VirtualEnv { return $false }
$user = 'name'
Test-NotDefaultUser($user) | Should Be $false
}
It "same username and inside VirtualEnv same default user gives 'false'" {
Mock Test-VirtualEnv { return $true }
$user = 'name'
Test-NotDefaultUser($user) | Should Be $false
}
It "different username and inside VirtualEnv same default user gives 'true'" {
Mock Test-VirtualEnv { return $true }
$user = 'differentName'
Test-NotDefaultUser($user) | Should Be $true
}
}
Context "With no default user set" {
BeforeAll { $DefaultUser = $null }
It "no username gives 'true'" {
Test-NotDefaultUser | Should Be $true
}
It "different username gives 'true'" {
$user = 'differentName'
Test-NotDefaultUser($user) | Should Be $true
}
It "different username and outside VirtualEnv gives 'true'" {
Mock Test-VirtualEnv { return $false }
$user = 'differentName'
Test-NotDefaultUser($user) | Should Be $true
}
It "no username and inside VirtualEnv gives 'true'" {
Mock Test-VirtualEnv { return $true }
Test-NotDefaultUser($user) | Should Be $true
}
}
}
#
# Module manifest for module 'oh-my-posh'
#
# Generated by: Jan
#
# Generated on: 28-Jun-16
#
@{
# Version number of this module.
ModuleVersion = '2.0.478'
# Script module or binary module file associated with this manifest.
RootModule = 'oh-my-posh.psm1'
# ID used to uniquely identify this module
GUID = '7d7c4a78-e2fe-4e5f-9510-34ac893e4562'
# Company or vendor of this module
CompanyName = 'Unknown'
# Author of this module
Author = 'Jan De Dobbeleer'
# Copyright statement for this module
Copyright = '(c) 2018 Jan De Dobbeleer. All rights reserved.'
# Description of the functionality provided by this module
Description = 'Theming capabilities for the PowerShell prompt in ConEmu'
# Minimum version of the Windows PowerShell engine required by this module
PowerShellVersion = '5.0'
# List of all files packaged with this module
FileList = @('defaults.ps1', 'Themes/Agnoster.psm1', 'Themes/Avit.psm1', 'Themes/Darkblood.psm1', 'Themes/Fish.psm1', 'Themes/Honukai.psm1', 'Themes/Paradox.psm1', 'Themes/Sorin.psm1', 'Helpers/PoshGit.ps1', 'Helpers/Prompt.ps1')
# Cmdlets to export from this module
CmdletsToExport = @()
# Variables to export from this module
VariablesToExport = @()
# Aliases to export from this module
AliasesToExport = '*'
# Functions to export from this module
FunctionsToExport = @('Write-ColorPreview',
'Show-Colors',
'Show-ThemeColors',
'Show-ThemeSymbols',
'Get-Theme',
'Set-Theme',
'Get-VCSStatus',
'Get-VcsInfo',
'Get-FormattedRootLocation',
'Get-ShortPath',
'Get-FullPath',
'Set-CursorForRightBlockWrite',
'Set-CursorUp',
'Test-VirtualEnv',
'Get-VirtualEnvName',
'Test-NotDefaultUser',
'Test-Administrator',
'Get-ComputerName',
'Set-Newline',
'Get-BatteryInfo',
'Get-ThemesLocation'
'Set-Prompt')
# Private data to pass to the module specified in RootModule. This may also contain a PSData hashtable with additional module metadata used by PowerShell.
PrivateData = @{
PSData = @{
# Tags applied to this module. These help with module discovery in online galleries.
Tags = @('git', 'agnoster', 'theme', 'zsh', 'posh-git', 'prompt', 'paradox')
# A URL to the license for this module.
LicenseUri = 'https://github.com/JanDeDobbeleer/oh-my-posh/blob/master/LICENSE'
# A URL to the main website for this project.
ProjectUri = 'https://github.com/JanDeDobbeleer/oh-my-posh'
} # End of PSData hashtable
} # End of PrivateData hashtable
}
#requires -Version 2 -Modules posh-git
. "$PSScriptRoot\defaults.ps1"
. "$PSScriptRoot\Helpers\PoshGit.ps1"
. "$PSScriptRoot\Helpers\Prompt.ps1"
<#
.SYNOPSIS
Generates the prompt before each line in the console
#>
function Set-Prompt {
Import-Module $sl.CurrentThemeLocation -Force
[ScriptBlock]$Prompt = {
$realLASTEXITCODE = $global:LASTEXITCODE
$lastCommandFailed = ($global:error.Count -gt $sl.ErrorCount) -or -not $?
$sl.ErrorCount = $global:error.Count
#Start the vanilla posh-git when in a vanilla window, else: go nuts
if(Test-IsVanillaWindow) {
Write-Host -Object ($pwd.ProviderPath) -NoNewline
Write-VcsStatus
}
Reset-CursorPosition
$prompt = (Write-Theme -lastCommandFailed $lastCommandFailed)
if($sl.Options.ConsoleTitle) {
$location = Get-Location
$folder = $location.Path
$folderSplit = $folder -split "$([IO.Path]::DirectorySeparatorChar)", 0, "SimpleMatch"
if ($folderSplit.length -gt 3)
{
$folder = "$($folderSplit[0])", "...", "$($folderSplit[-2])", "$($folderSplit[-1])" -join "$([IO.Path]::DirectorySeparatorChar)"
}
$prompt += "$([char]27)]2;$($folder)$([char]7)"
if ($location.Provider.Name -eq "FileSystem") {
$prompt += "$([char]27)]9;9;`"$($location.Path)`"$([char]7)"
}
}
$prompt
if ($sl.Options.PreserveLastExitCode) {
$global:LASTEXITCODE = $realLASTEXITCODE
}
Remove-Variable realLASTEXITCODE -Confirm:$false
}
Set-Item -Path Function:prompt -Value $Prompt -Force
}
function global:Write-WithPrompt() {
param(
[string]
$command
)
$lastCommandFailed = $global:error.Count -gt $sl.ErrorCount
$sl.ErrorCount = $global:error.Count
if(Test-IsVanillaWindow) {
Write-ClassicPrompt -command $command
return
}
Write-Theme -lastCommandFailed $lastCommandFailed -with $command
}
function Show-ThemeColors {
##############################
#.SYNOPSIS
# Show Current Theme Colors
#
#.DESCRIPTION
# Good for checking if your current color mappings
# work well with the theme.
#
##############################
Write-Host -Object ''
$sl.Colors.Keys | Sort-Object | ForEach-Object { Write-ColorPreview -text $_ -color $sl.Colors[$_] }
Write-Host -Object ''
}
function Show-ThemeSymbols {
##############################
#.SYNOPSIS
# Show Current Theme Symbols
#
#.DESCRIPTION
# Good for checking if your current font supports
# all the symbols the theme uses.
#
##############################
Write-Host -Object "`n--PromptSymbols--`n"
$sl.PromptSymbols.Keys | Sort-Object | ForEach-Object { Write-Host -Object ("{0,3} {1}" -f $sl.PromptSymbols[$_], $_) }
Write-Host -Object ''
Write-Host -Object "`n--GitSymbols--`n"
$sl.GitSymbols.Keys | Sort-Object | ForEach-Object { Write-Host -Object ("{0,3} {1}" -f $sl.GitSymbols[$_], $_) }
Write-Host -Object ''
}
function Write-ColorPreview {
param
(
[string]
$text,
[ConsoleColor]
$color
)
$display = Write-Prompt -Object (" {0,-40}" -f $text)
$display += Write-Prompt -Object (" {0,-40}" -f $color.ToString()) -BackgroundColor $color
Write-Host $display
}
function Show-Colors {
foreach ($color in [enum]::GetValues([ConsoleColor])) {
Write-ColorPreview -text $color -color $color
}
}
function Set-Theme {
param(
[Parameter(Mandatory=$true)]
[string]
$name
)
if (Test-Path "$($sl.MyThemesLocation)\$($name).psm1") {
$sl.CurrentThemeLocation = "$($sl.MyThemesLocation)\$($name).psm1"
}
elseif (Test-Path "$PSScriptRoot\Themes\$($name).psm1") {
$sl.CurrentThemeLocation = "$PSScriptRoot\Themes\$($name).psm1"
}
elseif (Test-Path "$name") {
$sl.CurrentThemeLocation = "$name"
}
else {
Write-Host ''
Write-Warning "Theme $name not found. Available themes are:"
Get-Theme
}
Set-Prompt
}
# Helper function to create argument completion results
function New-CompletionResult {
param(
[Parameter(Mandatory)]
[string]$CompletionText,
[string]$ListItemText = $CompletionText,
[System.Management.Automation.CompletionResultType]$CompletionResultType = [System.Management.Automation.CompletionResultType]::ParameterValue,
[string]$ToolTip = $CompletionText
)
New-Object System.Management.Automation.CompletionResult $CompletionText, $ListItemText, $CompletionResultType, $ToolTip
}
function Get-Theme {
##############################
#.SYNOPSIS
# Get available theme(s)
#.DESCRIPTION
# Shows available themes, as well as their type and location
# - Defaults (shipped with module)
# - User (user defined themes)
##############################
$themes = @()
if (Test-Path "$($ThemeSettings.MyThemesLocation)\*") {
Get-ChildItem -Path "$($ThemeSettings.MyThemesLocation)\*" -Include '*.psm1' -Exclude Tools.ps1 | ForEach-Object -Process {
$themes += [PSCustomObject]@{
Name = $_.BaseName
Type = "User"
Location = $_.FullName
}
}
}
Get-ChildItem -Path "$PSScriptRoot\Themes\*" -Include '*.psm1' -Exclude Tools.ps1 | Sort-Object Name | ForEach-Object -Process {
$themes += [PSCustomObject]@{
Name = $_.BaseName
Type = "Defaults"
Location = $_.FullName
}
}
$themes
}
function ThemeCompletion {
param(
$commandName,
$parameterName,
$wordToComplete,
$commandAst,
$fakeBoundParameter
)
$themes = Get-Theme
$themes |
Where-Object { $_.Name.ToLower().StartsWith($wordToComplete.ToLower()); } |
Select-Object -Unique -ExpandProperty Name |
ForEach-Object { New-CompletionResult -CompletionText $_ }
}
Register-ArgumentCompleter `
-CommandName Set-Theme `
-ParameterName name `
-ScriptBlock $function:ThemeCompletion
$sl = $global:ThemeSettings #local settings
$sl.ErrorCount = $global:error.Count
# oh-my-posh
[![Build status][build-status-badge]][build-status]
[![Travis build status][travis-build-status-badge]][travis-build-status]
[![Coverage Status][coverage-status-badge]][coverage-status]
[![Gitter][gitter-badge]][gitter]
[![PS Gallery][psgallery-badge]][powershell-gallery]
## ❤ Support ❤
[![Patreon][patreon-badge]][patreon]
[![Liberapay][liberapay-badge]][liberapay]
[![Ko-Fi][kofi-badge]][kofi]
## Table of Contents
* [About](#about)
* [Prerequisites](#prerequisites)
* [Installation](#installation)
* [Configuration](#configuration)
* [Helper functions](#helper-functions)
* [Themes](#themes)
## About
A theme engine for Powershell in ConEmu and Windows Terminal inspired by the work done by Chris Benti on [PS-Config][chrisbenti-psconfig] and [Oh-My-ZSH][oh-my-zsh] on OSX and Linux (hence the name).
More information about why I made this can be found on my [blog].
![Theme][img-indications]
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 or Windows Terminal to have a brilliant terminal experience on Windows.
You can install ConEmu using [Chocolatey][chocolatey]:
```powershell
choco install ConEmu
```
You can also install it using [Scoop][scoop] via the [extras bucket][scoop-extras]:
```powershell
$ scoop search conemu
'extras' bucket:
conemu (18.xx.xx)
$ scoop install conemu
```
Windows Terminal can be acquired from the Microsoft Store, the [Windows Terminal repo](https://github.com/microsoft/terminal), or via [Chocolatey][chocolatey]:
```powershell
choco install microsoft-windows-terminal
```
The fonts I use are Powerline fonts, there is a great [repository][nerdfonts] 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][theme-gist].
In case you notice weird glyphs after installing a font of choice, make sure the glyphs are available (maybe they have a different location in the font, if so, adjust the correct `$ThemeSettings` icon). If it turns out the character you want is not supported, select a different font.
## Installation
You need to use the [PowerShell Gallery][powershell-gallery] to install oh-my-posh.
Install posh-git and oh-my-posh:
```powershell
Install-Module posh-git -Scope CurrentUser
Install-Module oh-my-posh -Scope CurrentUser
```
Enable the prompt:
```powershell
# Start the default settings
Set-Prompt
# Alternatively set the desired theme:
Set-Theme Agnoster
```
In case you're running this on PS Core, make sure to also install version 2.0.0-beta1 of `PSReadLine`
```powershell
Install-Module -Name PSReadLine -AllowPrerelease -Scope CurrentUser -Force -SkipPublisherCheck
```
To enable the engine edit your PowerShell profile:
```powershell
if (!(Test-Path -Path $PROFILE )) { New-Item -Type File -Path $PROFILE -Force }
notepad $PROFILE
```
Append the following lines to your PowerShell profile:
```powershell
Import-Module posh-git
Import-Module oh-my-posh
Set-Theme Paradox
```
The last command sets the theme for the console. Check the available themes list below.
## Configuration
List the current configuration:
```powershell
$ThemeSettings
```
![Theme][img-themesettings]
You can tweak the settings by manipulating `$ThemeSettings`.
This example allows you to tweak the branch symbol using a unicode character:
````powershell
$ThemeSettings.GitSymbols.BranchSymbol = [char]::ConvertFromUtf32(0xE0A0)
````
Also do not forget the Posh-Git settings itself (enable the stash indication for example):
```powershell
$GitPromptSettings
```
Hide your `username@domain` when not in a virtual machine for the Agnoster, Fish, Honukai, Paradox and Sorin themes:
```powershell
$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.
```powershell
Set-Theme paradox
```
`Show-ThemeColors`: display the colors used by the theme
![Theme][img-themecolors]
`Show-Colors`: display colors configured in ConEmu
![Theme][img-showcolors]
## Themes
### Agnoster
![Agnoster Theme][img-theme-agnoster]
### Paradox
![Paradox Theme][img-theme-paradox]
### Sorin
![Sorin Theme][img-theme-sorin]
### Darkblood
![Darkblood Theme][img-theme-darkblood]
### Avit
![Avit Theme][img-theme-avit]
### Honukai
![Honukai Theme][img-theme-honukai]
### Fish
![Fish Theme][img-theme-fish]
### Robbyrussell
![Robbyrussell Theme][img-theme-robbyrussell]
### Pararussel
![Pararussel Theme][img-theme-pararussell]
### Material
![Material Theme][img-theme-material]
![Material Theme][img-theme-material2]
### Star
![Star Theme][img-theme-star]
### Zash
![Star Theme][img-theme-zash]
### Lambda
![Lambda Theme](./img/lambda.png)
### Emodipt
![Emodipt Theme][img-theme-emodipt]
## 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:
````powershell
#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-FormattedRootLocation`, `Get-ShortPath`, `Set-CursorForRightBlockWrite`, `Set-CursorUp`, `Set-Newline` or add your own logic completely.
To test the output in ConEmu, just switch to your theme:
```powershell
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!
### Adding stack count to a custom theme
As it seems getting access to the stack information when using pushd/popd is sort of mission impossible from within a theme, you can use a workaround proposed by [Jonathan Leech-Pepin][jleechpe]. In your `$PROFILE`, add a variable that will act as a correctly scoped pointer to fetch the stack context:
```powershell
$getStackContext = {Get-Location -Stack}
```
Next, in your custom theme, access the information you want to display:
```powershell
$stackCount = (&$getStackContext).count
```
### iTerm2 is creating notifications every time
This is caused by the `ConsoleTitle` functionality.
As explained by [Andrew Stanton-Nurse][consoletitle] it's linked to how terminals work with OSC codes.
The fix is to disable the `ConsoleTitle` functionality when in iTerm2 by adding the following snippet to your `$PROFILE`.
```powershell
if($env:LC_TERMINAL -eq "iTerm2") {
$ThemeSettings.Options.ConsoleTitle = $false
}
```
### Based on work by
* [Chris Benti][chrisbenti-psconfig]
* [Keith Dahlby][keithdahlby-poshgit]
[build-status-badge]: https://img.shields.io/appveyor/ci/janjoris/oh-my-posh/master.svg?maxAge=2592000
[build-status]: https://ci.appveyor.com/project/JanJoris/oh-my-posh
[travis-build-status-badge]: https://travis-ci.org/JanDeDobbeleer/oh-my-posh.svg?branch=master
[travis-build-status]: https://travis-ci.org/JanDeDobbeleer/oh-my-posh
[coverage-status-badge]: https://coveralls.io/repos/github/JanDeDobbeleer/oh-my-posh/badge.svg
[coverage-status]: https://coveralls.io/github/JanDeDobbeleer/oh-my-posh
[gitter-badge]: https://badges.gitter.im/oh-my-posh/Lobby.svg
[gitter]: https://gitter.im/oh-my-posh/general?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge
[psgallery-badge]: https://img.shields.io/powershellgallery/dt/oh-my-posh.svg
[powershell-gallery]: https://www.powershellgallery.com/packages/oh-my-posh/
[patreon-badge]: https://img.shields.io/badge/Support-Become%20a%20Patreon!-red.svg
[patreon]: https://www.patreon.com/jandedobbeleer
[liberapay-badge]: https://img.shields.io/badge/Liberapay-Donate-%23f6c915.svg
[liberapay]: https://liberapay.com/jandedobbeleer
[kofi-badge]: https://img.shields.io/badge/Ko--fi-Buy%20me%20a%20coffee!-%2346b798.svg
[kofi]: https://ko-fi.com/jandedobbeleer
[scoop]: https://scoop.sh/
[scoop-extras]: https://github.com/lukesampson/scoop/wiki/Buckets
[chrisbenti-psconfig]: https://github.com/chrisbenti/PS-Config
[keithdahlby-poshgit]: https://github.com/dahlbyk/posh-git
[jleechpe]: https://github.com/jleechpe
[oh-my-zsh]: https://github.com/robbyrussell/oh-my-zsh
[blog]: https://blog.itdepends.be/shell-shock/
[chocolatey]: https://chocolatey.org/
[nerdfonts]: https://github.com/ryanoasis/nerd-fonts
[theme-gist]: https://gist.github.com/JanDeDobbeleer/71c9f1361a562f337b855b75d7bbfd28
[img-indications]: img/indications.png
[img-themesettings]: img/themesettings.png
[img-themecolors]: img/themecolors.png
[img-showcolors]: img/showcolors.png
[img-theme-agnoster]: img/agnoster.png
[img-theme-paradox]: img/paradox.png
[img-theme-sorin]: img/sorin.png
[img-theme-darkblood]: img/darkblood.png
[img-theme-avit]: img/avit.png
[img-theme-honukai]: img/honukai.png
[img-theme-fish]: img/fish.png
[img-theme-robbyrussell]: img/robbyrussel.png
[img-theme-pararussell]: img/pararussel.png
[img-theme-material]: img/material.png
[img-theme-material2]: img/material2.png
[img-theme-star]: img/star.png
[img-theme-zash]: img/zash.png
[img-theme-emodipt]: img/emodipt.png
[consoletitle]: https://github.com/JanDeDobbeleer/oh-my-posh/issues/261#issuecomment-649701607
#requires -Version 2 -Modules posh-git
function Write-Theme {
param(
[bool]
$lastCommandFailed,
[string]
$with
)
$lastColor = $sl.Colors.PromptBackgroundColor
$prompt=''
if($sl.PromptSymbols.StartSymbol -ne ' ') {
$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 = $sl.CurrentUser
$computer = $sl.CurrentHostname
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 += ' '
$prompt
}
$sl = $global:ThemeSettings #local settings
$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
#requires -Version 2 -Modules posh-git
function Write-Theme {
param(
[bool]
$lastCommandFailed,
[string]
$with
)
# path
$sPath = "$(Get-FullPath -dir $pwd) "
#$getStackContext = {Get-Location -Stack}
#$stackCount = (&$getStackContext).count
# check for elevated prompt
$sAdmin = ""
If (Test-Administrator) {
$sAdmin = " $($sl.PromptSymbols.ElevatedSymbol)"
}
# timestamp
$sTime = " $(Get-Date -Format HH:mm:ss)"
# check the last command state and indicate if failed
$sFailed = ""
If ($lastCommandFailed) {
$sFailed = " $($sl.PromptSymbols.FailedCommandSymbol)"
}
# virtualenv
$sVenv = ""
If (Test-VirtualEnv) {
$sVenv = " $(Get-VirtualEnvName)"
}
# with
$sWith = ""
If ($with) {
$sWith = " $($with.ToUpper())"
}
$rightPrompt = "$sFailed$sWith$sVenv$sAdmin$sTime"
$prompt = ""
$prompt += Set-CursorForRightBlockWrite -textLength $rightPrompt.Length
$prompt += Write-Prompt -Object $sFailed -ForegroundColor $sl.Colors.CommandFailedIconForegroundColor
$prompt += Write-Prompt -Object $sWith -ForegroundColor $sl.Colors.WithForegroundColor
$prompt += Write-Prompt -Object $sVenv -ForegroundColor $sl.Colors.VirtualEnvForegroundColor
$prompt += Write-Prompt -Object $sAdmin -ForegroundColor $sl.Colors.AdminIconForegroundColor
$prompt += Write-Prompt -Object $sTime -ForegroundColor $sl.colors.TimestampForegroundColor
$prompt += Write-Prompt -Object "`r"
$lastColor = $sl.Colors.PromptBackgroundColor
$prompt += Write-Prompt -Object $sl.PromptSymbols.StartSymbol -ForegroundColor $sl.Colors.SessionInfoForegroundColor -BackgroundColor $sl.Colors.SessionInfoBackgroundColor
$prompt += Write-Prompt -Object $sl.PromptSymbols.SegmentForwardSymbol -ForegroundColor $sl.Colors.SessionInfoBackgroundColor -BackgroundColor $sl.Colors.PromptBackgroundColor
$prompt += Write-Prompt -Object " $($sPath)" -ForegroundColor $sl.Colors.PromptForegroundColor -BackgroundColor $lastColor
# git info
$vcsStatus = Get-VCSStatus
if ($vcsStatus) {
$vcsInfo = Get-VcsInfo -status $vcsStatus
$lastColor = $vcsInfo.BackgroundColor
$prompt += Write-Prompt -Object $sl.PromptSymbols.SegmentForwardSymbol -ForegroundColor $sl.Colors.PromptBackgroundColor -BackgroundColor $lastColor
if (!$sl.ColorizeVcInfoItems) {
$prompt += Write-Prompt -Object " $($vcsInfo.VcInfo) " -ForegroundColor $sl.Colors.GitForegroundColor -BackgroundColor $lastColor
}
else {
$settings = $global:GitPromptSettings
# Get the GIT Status Items
$prompt2 = ""
if ($settings.DefaultPromptWriteStatusFirst) {
$prompt2 += Write-Prompt $settings.PathStatusSeparator -BackgroundColor $lastColor
}
$prompt2 += Write-Prompt -Object " $($sl.GitSymbols.BranchSymbol) " -ForegroundColor $sl.Colors.GitForegroundColor -BackgroundColor $lastColor
$prompt2 += Write-Prompt -Object $sl.PromptSymbols.SegmentForwardSymbol -ForegroundColor $lastColor -BackgroundColor $global:settings.BranchColor.BackgroundColor
$prompt2 += Write-GitBranchName $vcsStatus
$prompt2 += Write-GitBranchStatus $vcsStatus
$prompt2 += Write-Prompt $settings.BeforeIndex
if ($settings.EnableFileStatus) {
if ($vcsStatus.HasIndex) {
$prompt2 += Write-GitIndexStatus $vcsStatus
}
if ($vcsStatus.HasWorking) {
$prompt2 += Write-Prompt $settings.DelimStatus.Text -ForegroundColor $sl.Colors.GitForegroundColor
$prompt2 += Write-GitWorkingDirStatus $vcsStatus
}
}
$prompt2 += Write-GitWorkingDirStatusSummary $vcsStatus
if ($settings.EnableStashStatus -and ($vcsStatus.StashCount -gt 0)) {
$prompt2 += Write-GitStashCount $vcsStatus
}
# When status is first, place the separator after the status summary
if (!$settings.DefaultPromptWriteStatusFirst) {
$prompt2 += Write-Prompt $settings.PathStatusSeparator -BackgroundColor $lastColor
}
$prompt += Write-Prompt -Object $prompt2 -BackgroundColor $lastColor
}
}
If ($sl.DoubleCommandLine) {
$prompt += Set-Newline
}
# Writes the postfixes to the prompt
$indicatorColor = If ($lastCommandFailed) { $sl.Colors.CommandFailedIconForegroundColor } Else { $lastColor }
$prompt += Write-Prompt -Object $sl.PromptSymbols.SegmentForwardSymbol -ForegroundColor $indicatorColor -BackgroundColor $sl.Colors.SessionInfoBackgroundColor
$prompt += ' '
$prompt
}
$sl = $global:ThemeSettings #local settings
$sl.PromptSymbols.SegmentForwardSymbol = [char]::ConvertFromUtf32(0xE0B0)
$sl.PromptSymbols.PromptIndicator = [char]::ConvertFromUtf32(0x276F)
$sl.Colors.DriveForegroundColor = [ConsoleColor]::DarkBlue
$sl.Colors.GitDefaultColor = [ConsoleColor]::DarkGreen
$sl.Colors.GitLocalChangesColor = [ConsoleColor]::DarkYellow
$sl.Colors.GitNoLocalChangesAndAheadAndBehindColor = [ConsoleColor]::DarkRed
$sl.Colors.GitNoLocalChangesAndAheadColor = [ConsoleColor]::DarkMagenta
$sl.Colors.GitNoLocalChangesAndBehindColor = [ConsoleColor]::DarkRed
$sl.Colors.PromptHighlightColor = [ConsoleColor]::DarkBlue
$sl.Colors.PromptSymbolColor = [ConsoleColor]::White
$sl.Colors.SessionInfoBackgroundColor = [ConsoleColor]::Black
$sl.Colors.SessionInfoForegroundColor = [ConsoleColor]::White
$sl.Colors.WithBackgroundColor = [ConsoleColor]::DarkRed
$sl.Colors.VirtualEnvBackgroundColor = [ConsoleColor]::Red
$sl.Colors.PromptForegroundColor = [ConsoleColor]::White
$sl.Colors.WithForegroundColor = [ConsoleColor]::White
$sl.Colors.VirtualEnvForegroundColor = [System.ConsoleColor]::White
$sl.Colors.TimestampForegroundColor = [ConsoleColor]::DarkCyan
$sl.Colors.CommandFailedIconForegroundColor = [ConsoleColor]::DarkRed
$sl.Colors.PromptBackgroundColor = [ConsoleColor]::DarkBlue
if ($sl.ColorizeVcInfoItems) {
$sl.Colors.GitForegroundColor = [ConsoleColor]::Black
$sl.Colors.AdminIconForegroundColor = [ConsoleColor]::White
}
else {
$sl.Colors.GitForegroundColor = [ConsoleColor]::DarkGray
$sl.Colors.AdminIconForegroundColor = [ConsoleColor]::DarkYellow
}
$global:GitPromptSettings.EnableStashStatus = $true
$sl | Add-Member -NotePropertyName DoubleCommandLine -NotePropertyValue 0 -Force
$sl | Add-Member -NotePropertyName ColorizeVcInfoItems -NotePropertyValue 0 -Force
#requires -Version 2 -Modules posh-git
function Write-Theme {
param(
[bool]
$lastCommandFailed,
[string]
$with
)
$prompt = Write-Prompt -Object $sl.PromptSymbols.StartSymbol -ForegroundColor $sl.Colors.PromptForegroundColor
$dir = Get-FullPath -dir $pwd
$prompt += Write-Prompt -Object $dir -ForegroundColor $sl.Colors.PromptForegroundColor
$status = Get-VCSStatus
if ($status) {
$vcsInfo = Get-VcsInfo -status ($status)
$info = $vcsInfo.VcInfo
$prompt += Write-Prompt -Object " $info" -ForegroundColor $vcsInfo.BackgroundColor
}
#check for elevated prompt
If (Test-Administrator) {
$prompt += Write-Prompt -Object " $($sl.PromptSymbols.ElevatedSymbol)" -ForegroundColor $sl.Colors.AdminIconForegroundColor
}
#check the last command state and indicate if failed
If ($lastCommandFailed) {
$prompt += Write-Prompt -Object " $($sl.PromptSymbols.FailedCommandSymbol)" -ForegroundColor $sl.Colors.CommandFailedIconForegroundColor
}
$timeStamp = Get-Date -Format T
$clock = [char]::ConvertFromUtf32(0x25F7)
$timestamp = "$clock $timeStamp"
if ($status) {
$timeStamp = Get-TimeSinceLastCommit
}
$prompt += Set-CursorForRightBlockWrite -textLength $timestamp.Length
$prompt += Write-Prompt $timeStamp -ForegroundColor $sl.Colors.PromptBackgroundColor
$prompt += Set-Newline
if (Test-VirtualEnv) {
$prompt += Write-Prompt -Object "$($sl.PromptSymbols.VirtualEnvSymbol) $(Get-VirtualEnvName) " -BackgroundColor $sl.Colors.VirtualEnvBackgroundColor -ForegroundColor $sl.Colors.VirtualEnvForegroundColor
}
if ($with) {
$prompt += Write-Prompt -Object "$($with.ToUpper()) " -BackgroundColor $sl.Colors.WithBackgroundColor -ForegroundColor $sl.Colors.WithForegroundColor
}
$prompt += Write-Prompt -Object $sl.PromptSymbols.PromptIndicator -ForegroundColor $sl.Colors.PromptBackgroundColor
$prompt += ' '
$prompt
}
function Get-TimeSinceLastCommit {
return (git log --pretty=format:'%cr' -1)
}
$sl = $global:ThemeSettings #local settings
$sl.PromptSymbols.StartSymbol = ''
$sl.PromptSymbols.PromptIndicator = [char]::ConvertFromUtf32(0x25B6)
$sl.Colors.PromptForegroundColor = [ConsoleColor]::DarkBlue
$sl.Colors.WithForegroundColor = [ConsoleColor]::DarkRed
$sl.Colors.PromptHighlightColor = [ConsoleColor]::DarkBlue
$sl.Colors.WithBackgroundColor = [ConsoleColor]::Magenta
$sl.Colors.PromptSymbolColor = [ConsoleColor]::White
$sl.Colors.VirtualEnvBackgroundColor = [System.ConsoleColor]::Magenta
$sl.Colors.VirtualEnvForegroundColor = [System.ConsoleColor]::Red
#requires -Version 2 -Modules posh-git
function Write-Theme {
param(
[bool]
$lastCommandFailed,
[string]
$with
)
$prompt = Write-Prompt -Object ([char]::ConvertFromUtf32(0x250C)) -ForegroundColor $sl.Colors.PromptSymbolColor
$user = $sl.CurrentUser
$computer = $sl.CurrentHostname
$prompt += Write-Segment -content "$user@$computer" -foregroundColor $sl.Colors.PromptForegroundColor
# $prompt += "$($sl.PromptSymbols.SegmentForwardSymbol) "
$status = Get-VCSStatus
if ($status) {
$vcsInfo = Get-VcsInfo -status ($status)
$info = $vcsInfo.VcInfo
$prompt += Write-Segment -content $info -foregroundColor $sl.Colors.GitForegroundColor
}
#check for elevated prompt
If (Test-Administrator) {
$prompt += Write-Segment -content $sl.PromptSymbols.ElevatedSymbol -foregroundColor $sl.Colors.AdminIconForegroundColor
}
#check the last command state and indicate if failed
If ($lastCommandFailed) {
$prompt += Write-Segment -content $sl.PromptSymbols.FailedCommandSymbol -foregroundColor $sl.Colors.CommandFailedIconForegroundColor
}
$prompt += ''
# SECOND LINE
$prompt += Set-Newline
$prompt += Write-Prompt -Object ([char]::ConvertFromUtf32(0x2514)) -ForegroundColor $sl.Colors.PromptSymbolColor
$path += Get-FullPath -dir $pwd
$prompt += Write-Prompt -Object $sl.PromptSymbols.SegmentBackwardSymbol -ForegroundColor $sl.Colors.PromptSymbolColor
$prompt += Write-Prompt -Object $path -ForegroundColor $sl.Colors.PromptForegroundColor
if (Test-VirtualEnv) {
$prompt += Write-Prompt -Object "$($sl.PromptSymbols.SegmentForwardSymbol) $($sl.PromptSymbols.SegmentBackwardSymbol)" -ForegroundColor $sl.Colors.PromptSymbolColor
$prompt += Write-Prompt -Object "$($sl.PromptSymbols.VirtualEnvSymbol) $(Get-VirtualEnvName)" -ForegroundColor $sl.Colors.VirtualEnvForegroundColor
}
if ($with) {
$prompt += Write-Prompt -Object "$($sl.PromptSymbols.SegmentForwardSymbol) $($sl.PromptSymbols.SegmentBackwardSymbol)" -ForegroundColor $sl.Colors.PromptSymbolColor
$prompt += Write-Prompt -Object "$($with.ToUpper())" -ForegroundColor $sl.Colors.WithForegroundColor
}
$prompt += Write-Prompt -Object "$($sl.PromptSymbols.SegmentForwardSymbol)$($sl.PromptSymbols.PromptIndicator)" -ForegroundColor $sl.Colors.PromptSymbolColor
$prompt += ' '
$prompt
}
function Write-Segment {
param(
$content,
$foregroundColor
)
$prompt += Write-Prompt -Object $sl.PromptSymbols.SegmentBackwardSymbol -ForegroundColor $sl.Colors.PromptSymbolColor
$prompt += Write-Prompt -Object $content -ForegroundColor $foregroundColor
$prompt += Write-Prompt -Object "$($sl.PromptSymbols.SegmentForwardSymbol) " -ForegroundColor $sl.Colors.PromptSymbolColor
return $prompt
}
$sl = $global:ThemeSettings #local settings
$sl.PromptSymbols.PromptIndicator = '>'
$sl.PromptSymbols.SegmentForwardSymbol = ']'
$sl.PromptSymbols.SegmentBackwardSymbol = '['
$sl.PromptSymbols.PathSeparator = '\'
$sl.PromptSymbols.FailedCommandSymbol = 'x'
$sl.Colors.PromptForegroundColor = [ConsoleColor]::White
$sl.Colors.PromptSymbolColor = [ConsoleColor]::DarkRed
$sl.Colors.PromptHighlightColor = [ConsoleColor]::DarkBlue
$sl.Colors.GitForegroundColor = [ConsoleColor]::White
$sl.Colors.WithForegroundColor = [ConsoleColor]::DarkYellow
$sl.Colors.WithBackgroundColor = [ConsoleColor]::Magenta
$sl.Colors.VirtualEnvBackgroundColor = [System.ConsoleColor]::Magenta
$sl.Colors.VirtualEnvForegroundColor = [System.ConsoleColor]::White
#requires -Version 2 -Modules posh-git
function Write-Theme {
param(
[bool]
$lastCommandFailed,
[string]
$with
)
# timestamp
$prompt = Write-Prompt -Object "[ $(Get-Date -Format HH:mm:ss) ] " -ForegroundColor $sl.colors.TimestampForegroundColor
# check for elevated prompt
If (Test-Administrator) {
$prompt += Write-Prompt -Object "$($sl.PromptSymbols.ElevatedSymbol) "
}
# path
$prompt += Write-Prompt -Object "$(Get-ShortPath -dir $pwd) " -ForegroundColor $sl.Colors.DriveForegroundColor
# virtualenv
If (Test-VirtualEnv) {
$prompt += Write-Prompt -Object "$(Get-VirtualEnvName) " -ForegroundColor $sl.Colors.VirtualEnvForegroundColor
}
# git info
If ($status = Get-VCSStatus) {
$vcsInfo = Get-VcsInfo -status ($status)
$prompt += Write-Prompt -Object "$($vcsInfo.VcInfo) " -ForegroundColor $vcsInfo.BackgroundColor
}
# with
If ($with) {
$prompt += Write-Prompt -Object " $($with.ToUpper()) " -ForegroundColor $sl.Colors.WithBackgroundColor
}
# Writes the postfixes to the prompt
$indicatorColor = If ($lastCommandFailed) { $sl.Colors.CommandFailedIconForegroundColor } Else { $sl.Colors.PromptSymbolColor }
$prompt += Write-Prompt -Object $sl.PromptSymbols.PromptIndicator -ForegroundColor $indicatorColor
$prompt += ' '
$prompt
}
$sl = $global:ThemeSettings #local settings
$sl.GitSymbols.BranchSymbol = [char]::ConvertFromUtf32(0x1F6A6)
$sl.GitSymbols.BranchAheadStatusSymbol = [char]::ConvertFromUtf32(0x2B6B)
$sl.GitSymbols.BranchBehindStatusSymbol = [char]::ConvertFromUtf32(0x2B6D)
$sl.GitSymbols.BranchIdenticalStatusToSymbol = [char]::ConvertFromUtf32(0x2705)
$sl.GitSymbols.BranchUntrackedSymbol = [char]::ConvertFromUtf32(0x274E)
$sl.PromptSymbols.PromptIndicator = [char]::ConvertFromUtf32(0x276F)
$sl.Colors.PromptSymbolColor = [ConsoleColor]::Green
$sl.Colors.VirtualEnvForegroundColor = [System.ConsoleColor]::Magenta
$sl.Colors.TimestampForegroundColor = [ConsoleColor]::DarkYellow
$sl | Add-Member -NotePropertyName DoubleCommandLine -NotePropertyValue 0 -Force
#requires -Version 2 -Modules posh-git
function Write-Theme {
param(
[bool]
$lastCommandFailed,
[string]
$with
)
$date = Get-Date -UFormat %d-%m-%Y
$timeStamp = Get-Date -UFormat %R
$leftText = "$($sl.PromptSymbols.SegmentBackwardSymbol) $date $($sl.PromptSymbols.SegmentSeparatorBackwardSymbol) $timeStamp "
$prompt += Set-CursorUp -lines 1
$prompt += Set-CursorForRightBlockWrite -textLength $leftText.Length
$prompt += Write-Prompt -Object "$($sl.PromptSymbols.SegmentBackwardSymbol)" -ForegroundColor $sl.Colors.PromptBackgroundColor -BackgroundColor $sl.Colors.PromptHighlightColor
$prompt += Write-Prompt " $date $($sl.PromptSymbols.SegmentSeparatorBackwardSymbol) $timeStamp " -ForegroundColor $sl.Colors.PromptForegroundColor -BackgroundColor $sl.Colors.PromptBackgroundColor
# Write the prompt
$prompt += Set-Newline
$prompt += Write-Prompt -Object $sl.PromptSymbols.StartSymbol -ForegroundColor $sl.Colors.PromptForegroundColor -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 = $sl.CurrentUser
$computer = $sl.CurrentHostname
$path = Get-FullPath -dir $pwd
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 "$path " -ForegroundColor $sl.Colors.PromptForegroundColor -BackgroundColor $sl.Colors.PromptBackgroundColor
$status = Get-VCSStatus
if ($status) {
$themeInfo = Get-VcsInfo -status ($status)
$prompt += Write-Prompt -Object $sl.PromptSymbols.SegmentSeparatorForwardSymbol -ForegroundColor $sl.Colors.PromptForegroundColor -BackgroundColor $sl.Colors.PromptBackgroundColor
$prompt += Write-Prompt -Object " $($themeInfo.VcInfo) " -ForegroundColor $sl.Colors.PromptForegroundColor -BackgroundColor $sl.Colors.PromptBackgroundColor
}
if ($with) {
$prompt += Write-Prompt -Object $sl.PromptSymbols.SegmentSeparatorForwardSymbol -ForegroundColor $sl.Colors.PromptForegroundColor -BackgroundColor $sl.Colors.PromptBackgroundColor
$prompt += Write-Prompt -Object " $($with.ToUpper()) " -ForegroundColor $sl.Colors.PromptForegroundColor -BackgroundColor $sl.Colors.PromptBackgroundColor
}
# Writes the postfix to the prompt
$prompt += Write-Prompt -Object $sl.PromptSymbols.SegmentForwardSymbol -ForegroundColor $sl.Colors.PromptBackgroundColor
$prompt += ' '
$prompt
}
$sl = $global:ThemeSettings #local settings
$sl.PromptSymbols.StartSymbol = ''
$sl.PromptSymbols.SegmentForwardSymbol = [char]::ConvertFromUtf32(0xE0B0)
$sl.PromptSymbols.SegmentBackwardSymbol = [char]::ConvertFromUtf32(0xE0B2)
$sl.PromptSymbols.SegmentSeparatorForwardSymbol = [char]::ConvertFromUtf32(0xE0B1)
$sl.PromptSymbols.SegmentSeparatorBackwardSymbol = [char]::ConvertFromUtf32(0xE0B3)
$sl.Colors.PromptSymbolColor = [ConsoleColor]::White
$sl.Colors.PromptForegroundColor = [ConsoleColor]::White
$sl.Colors.PromptHighlightColor = [ConsoleColor]::Magenta
$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
#requires -Version 2 -Modules posh-git
function Write-Theme {
param(
[bool]
$lastCommandFailed,
[string]
$with
)
# write # and space
$prompt = Write-Prompt -Object $sl.PromptSymbols.StartSymbol -ForegroundColor $sl.Colors.PromptHighlightColor
# write user
$user = $sl.CurrentUser
if (Test-NotDefaultUser($user)) {
$prompt += Write-Prompt -Object " $user" -ForegroundColor $sl.Colors.PromptHighlightColor
# write at (devicename)
$computer = $sl.CurrentHostname
$prompt += Write-Prompt -Object " at" -ForegroundColor $sl.Colors.PromptForegroundColor
$prompt += Write-Prompt -Object " $computer" -ForegroundColor $sl.Colors.GitDefaultColor
# write in for folder
$prompt += Write-Prompt -Object " in" -ForegroundColor $sl.Colors.PromptForegroundColor
}
# write folder
$dir = Get-FullPath -dir $pwd
$prompt += Write-Prompt -Object " $dir " -ForegroundColor $sl.Colors.AdminIconForegroundColor
# write on (git:branchname status)
$status = Get-VCSStatus
if ($status) {
$sl.GitSymbols.BranchSymbol = ''
$themeInfo = Get-VcsInfo -status ($status)
$prompt += Write-Prompt -Object 'on git:' -ForegroundColor $sl.Colors.PromptForegroundColor
$prompt += Write-Prompt -Object "$($themeInfo.VcInfo) " -ForegroundColor $themeInfo.BackgroundColor
}
# write virtualenv
if (Test-VirtualEnv) {
$prompt += Write-Prompt -Object 'inside env:' -ForegroundColor $sl.Colors.PromptForegroundColor
$prompt += Write-Prompt -Object "$(Get-VirtualEnvName) " -ForegroundColor $themeInfo.VirtualEnvForegroundColor
}
# write [time]
$timeStamp = Get-Date -Format T
$prompt += Write-Prompt "[$timeStamp]" -ForegroundColor $sl.Colors.PromptForegroundColor
# check for elevated prompt
If (Test-Administrator) {
$prompt += Write-Prompt -Object "$($sl.PromptSymbols.ElevatedSymbol) " -ForegroundColor $sl.Colors.AdminIconForegroundColor
}
# check the last command state and indicate if failed
$foregroundColor = $sl.Colors.PromptHighlightColor
If ($lastCommandFailed) {
$foregroundColor = $sl.Colors.CommandFailedIconForegroundColor
}
if ($with) {
$prompt += Write-Prompt -Object "$($with.ToUpper()) " -BackgroundColor $sl.Colors.WithBackgroundColor -ForegroundColor $sl.Colors.WithForegroundColor
}
$prompt += Set-Newline
$prompt += Write-Prompt -Object $sl.PromptSymbols.PromptIndicator -ForegroundColor $foregroundColor
$prompt += ' '
$prompt
}
function Get-TimeSinceLastCommit {
return (git log --pretty=format:'%cr' -1)
}
$sl = $global:ThemeSettings #local settings
$sl.PromptSymbols.StartSymbol = '#'
$sl.PromptSymbols.PromptIndicator = [char]::ConvertFromUtf32(0x279C)
$sl.Colors.PromptHighlightColor = [ConsoleColor]::DarkBlue
$sl.Colors.PromptForegroundColor = [ConsoleColor]::White
$sl.Colors.PromptHighlightColor = [ConsoleColor]::DarkBlue
$sl.Colors.WithForegroundColor = [ConsoleColor]::DarkRed
$sl.Colors.WithBackgroundColor = [ConsoleColor]::Magenta
$sl.Colors.VirtualEnvForegroundColor = [ConsoleColor]::Red
#requires -Version 2 -Modules posh-git
function Write-Theme {
param(
[bool]
$lastCommandFailed,
[string]
$with
)
#check the last command state and indicate if failed
If ($lastCommandFailed) {
$prompt = Write-Prompt -Object "$($sl.PromptSymbols.FailedCommandSymbol) " -ForegroundColor $sl.Colors.CommandFailedIconForegroundColor
}
#check for elevated prompt
If (Test-Administrator) {
$prompt += Write-Prompt -Object "$($sl.PromptSymbols.ElevatedSymbol) " -ForegroundColor $sl.Colors.AdminIconForegroundColor
}
$user = $sl.CurrentUser
$lambda = [char]::ConvertFromUtf32(0x000003BB)
if (Test-NotDefaultUser($user)) {
$prompt += Write-Prompt -Object "$lambda " -ForegroundColor $sl.Colors.PromptForegroundColor
}
# Writes the drive portion
$prompt += Write-Prompt -Object "$(Get-ShortPath -dir $pwd) " -ForegroundColor $sl.Colors.DriveForegroundColor
$status = Get-VCSStatus
if ($status) {
$themeInfo = Get-VcsInfo -status ($status)
$prompt += Write-Prompt -Object "git:" -ForegroundColor $sl.Colors.PromptForegroundColor
$prompt += Write-Prompt -Object "$($themeInfo.VcInfo) " -ForegroundColor $themeInfo.BackgroundColor
}
# write virtualenv
if (Test-VirtualEnv) {
$prompt += Write-Prompt -Object 'env:' -ForegroundColor $sl.Colors.PromptForegroundColor
$prompt += Write-Prompt -Object "$(Get-VirtualEnvName) " -ForegroundColor $themeInfo.VirtualEnvForegroundColor
}
if ($with) {
$prompt += Write-Prompt -Object "$($with.ToUpper()) " -BackgroundColor $sl.Colors.WithBackgroundColor -ForegroundColor $sl.Colors.WithForegroundColor
}
$prompt
}
$sl = $global:ThemeSettings #local settings
$sl.PromptSymbols.PromptIndicator = [char]::ConvertFromUtf32(0x276F)
$sl.Colors.PromptForegroundColor = [ConsoleColor]::White
$sl.Colors.PromptSymbolColor = [ConsoleColor]::White
$sl.Colors.PromptHighlightColor = [ConsoleColor]::DarkRed
$sl.Colors.WithForegroundColor = [ConsoleColor]::DarkRed
$sl.Colors.WithBackgroundColor = [ConsoleColor]::DarkRed
$sl.Colors.DriveForegroundColor = [ConsoleColor]::DarkRed
#requires -Version 2 -Modules posh-git
function Write-Theme {
param(
[bool]
$lastCommandFailed,
[string]
$with
)
#$prompt += Write-Prompt -Object ($sl.PromptSymbols.PromptIndicator+" ") -ForegroundColor $sl.Colors.PromptBackgroundColor
#check the last command state and indicate if failed
$promtSymbolColor = [ConsoleColor]::Green
If ($lastCommandFailed) {
$promtSymbolColor = [ConsoleColor]::Red
}
$prompt += Write-Prompt -Object (
[char]::ConvertFromUtf32(0x276F)) -ForegroundColor $sl.Colors.GitNoLocalChangesAndAheadColor
$prompt += Write-Prompt -Object (
[char]::ConvertFromUtf32(0x276F)+" ") -ForegroundColor $promtSymbolColor
# Writes the postfixes to the prompt
$user = $sl.CurrentUser
$prompt += Write-Prompt -Object $user
$prompt += Write-Prompt -Object " :: "
# Writes the drive portion
$drive = $sl.PromptSymbols.HomeSymbol
if ($pwd.Path -ne $HOME) {
$drive = "$(Split-Path -path $pwd -Leaf)"
}
$prompt += Write-Prompt -Object $drive -ForegroundColor $sl.Colors.DriveForegroundColor
$status = Get-VCSStatus
if ($status) {
$prompt += Write-Prompt -Object " git(" -ForegroundColor $sl.Colors.PromptHighlightColor
$prompt += Write-Prompt -Object ($status.Branch) -ForegroundColor $sl.Colors.WithForegroundColor
$prompt += Write-Prompt -Object ")" -ForegroundColor $sl.Colors.PromptHighlightColor
if ($status.Working.Length -gt 0) {
$prompt += Write-Prompt -Object (" "+$sl.PromptSymbols.GitDirtyIndicator) -ForegroundColor $sl.Colors.GitDefaultColor
}
} else {
$prompt += Write-Prompt -Object (" ::") -ForegroundColor $sl.Colors.GitDefaultColor
}
if ($with) {
$prompt += Write-Prompt -Object "$($with.ToUpper()) " -BackgroundColor $sl.Colors.WithBackgroundColor -ForegroundColor $sl.Colors.WithForegroundColor
}
$sTime = " $(Get-Date -Format HH:mm)"
$prompt += Write-Prompt -Object $sTime -ForegroundColor $sl.colors.PromptSymbolColor
#$prompt += Set-Newline
$prompt += ' '
$prompt
}
function Get-TimeSinceLastCommit {
return (git log --pretty=format:'%cr' -1)
}
$sl = $global:ThemeSettings #local settings
$sl.PromptSymbols.PromptIndicator = '+'
$sl.PromptSymbols.HomeSymbol = '🏠'
$sl.Colors.PromptSymbolColor = [ConsoleColor]::Green
$sl.Colors.PromptHighlightColor = [ConsoleColor]::Blue
$sl.Colors.DriveForegroundColor = [ConsoleColor]::Cyan
$sl.Colors.WithForegroundColor = [ConsoleColor]::Red
$sl.PromptSymbols.GitDirtyIndicator =[char]::ConvertFromUtf32(10007)
$sl.Colors.GitDefaultColor = [ConsoleColor]::Yellow
$sl.Colors.AdminIconForegroundColor = [ConsoleColor]::Blue
#requires -Version 2 -Modules posh-git
function Write-Theme {
param(
[bool]
$lastCommandFailed,
[string]
$with
)
$lastColor = $sl.Colors.PromptBackgroundColor
$prompt = Write-Prompt -Object $sl.PromptSymbols.StartSymbol -ForegroundColor $sl.Colors.PromptForegroundColor -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 = $sl.CurrentUser
$computer = $sl.CurrentHostname
$path = Get-FullPath -dir $pwd
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 "$path " -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
}
# Writes the postfix to the prompt
$prompt += Write-Prompt -Object $sl.PromptSymbols.SegmentForwardSymbol -ForegroundColor $lastColor
$timeStamp = Get-Date -UFormat %R
$timestamp = "[$timeStamp]"
$prompt += Set-CursorForRightBlockWrite -textLength ($timestamp.Length + 1)
$prompt += Write-Prompt $timeStamp -ForegroundColor $sl.Colors.PromptForegroundColor
$prompt += Set-Newline
if ($with) {
$prompt += Write-Prompt -Object "$($with.ToUpper()) " -BackgroundColor $sl.Colors.WithBackgroundColor -ForegroundColor $sl.Colors.WithForegroundColor
}
$prompt += Write-Prompt -Object ($sl.PromptSymbols.PromptIndicator) -ForegroundColor $sl.Colors.PromptSymbolColor
$prompt += ' '
$prompt
}
$sl = $global:ThemeSettings #local settings
$sl.PromptSymbols.StartSymbol = ''
$sl.PromptSymbols.PromptIndicator = [char]::ConvertFromUtf32(0x276F)
$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]::DarkRed
$sl.Colors.WithBackgroundColor = [ConsoleColor]::Magenta
$sl.Colors.VirtualEnvBackgroundColor = [System.ConsoleColor]::Red
$sl.Colors.VirtualEnvForegroundColor = [System.ConsoleColor]::White
#requires -Version 2 -Modules posh-git
function Write-Theme {
param(
[bool]
$lastCommandFailed,
[string]
$with
)
#check the last command state and indicate if failed and change the colors of the arrows
If ($lastCommandFailed) {
$prompt += Write-Prompt -Object (
[char]::ConvertFromUtf32(0x276F)) -ForegroundColor $sl.Colors.WithForegroundColor
$prompt += Write-Prompt -Object (
[char]::ConvertFromUtf32(0x276F) +" ") -ForegroundColor $sl.Colors.WithForegroundColor
}Else{
$prompt += Write-Prompt -Object (
[char]::ConvertFromUtf32(0x276F)) -ForegroundColor $sl.Colors.GitNoLocalChangesAndAheadColor
$prompt += Write-Prompt -Object (
[char]::ConvertFromUtf32(0x276F) +" ") -ForegroundColor $sl.Colors.PromptSymbolColor
}
# Writes the drive portion
$drive = $sl.PromptSymbols.HomeSymbol
if ($pwd.Path -ne $HOME) {
$drive = "$(Split-Path -path $pwd -Leaf)"
}
$prompt += Write-Prompt -Object $drive -ForegroundColor $sl.Colors.DriveForegroundColor
$status = Get-VCSStatus
if ($status) {
$prompt += Write-Prompt -Object " git:(" -ForegroundColor $sl.Colors.PromptHighlightColor
$prompt += Write-Prompt -Object "$($status.Branch)" -ForegroundColor $sl.Colors.WithForegroundColor
$prompt += Write-Prompt -Object ")" -ForegroundColor $sl.Colors.PromptHighlightColor
if ($status.Working.Length -gt 0) {
$prompt += Write-Prompt -Object (" " + $sl.PromptSymbols.GitDirtyIndicator) -ForegroundColor $sl.Colors.GitDefaultColor
}
}
if ($with) {
$prompt += Write-Prompt -Object "$($with.ToUpper()) " -BackgroundColor $sl.Colors.WithBackgroundColor -ForegroundColor $sl.Colors.WithForegroundColor
}
$timeStamp = Get-Date -UFormat %R
$clock = [char]::ConvertFromUtf32(0x25F7)
$timestamp = "$clock $timeStamp"
if ($status) {
$timeStamp = Get-TimeSinceLastCommit
}
$prompt += Set-CursorForRightBlockWrite -textLength $timestamp.Length
$prompt += Write-Prompt $timeStamp -ForegroundColor $sl.Colors.DriveForegroundColor
$prompt += Set-Newline
$prompt += Write-Prompt -Object ($sl.PromptSymbols.PromptIndicator) -ForegroundColor $sl.Colors.PromptBackgroundColor
$prompt += ' '
$prompt
}
function Get-TimeSinceLastCommit {
return (git log --pretty=format:'%cr' -1)
}
$sl = $global:ThemeSettings #local settings
$sl.PromptSymbols.PromptIndicator = [char]::ConvertFromUtf32(0x1F441)
$sl.PromptSymbols.HomeSymbol = [char]::ConvertFromUtf32(0x1F3E0)
$sl.Colors.PromptSymbolColor = [ConsoleColor]::Green
$sl.Colors.PromptHighlightColor = [ConsoleColor]::Blue
$sl.Colors.DriveForegroundColor = [ConsoleColor]::Cyan
$sl.Colors.WithForegroundColor = [ConsoleColor]::Red
$sl.PromptSymbols.GitDirtyIndicator = [char]::ConvertFromUtf32(0x1F4CC)
$sl.Colors.GitDefaultColor = [ConsoleColor]::Yellow
#requires -Version 2 -Modules posh-git
function Write-Theme {
param(
[bool]
$lastCommandFailed,
[string]
$with
)
$adminsymbol = $sl.PromptSymbols.ElevatedSymbol
$venvsymbol = $sl.PromptSymbols.VirtualEnvSymbol
$clocksymbol = $sl.PromptSymbols.ClockSymbol
## Left Part
$prompt = Write-Prompt -Object " $($sl.PromptSymbols.StartSymbol) " -ForegroundColor $sl.Colors.SessionInfoForegroundColor -BackgroundColor $sl.Colors.SessionInfoBackgroundColor
$prompt += Write-Prompt -Object "$($sl.PromptSymbols.SegmentSubForwardSymbol) " -ForegroundColor $sl.Colors.PromptForegroundColor -BackgroundColor $sl.Colors.SessionInfoBackgroundColor
$pathSymbol = if ($pwd.Path -eq $HOME) { $sl.PromptSymbols.PathHomeSymbol } else { $sl.PromptSymbols.PathSymbol }
# Writes the drive portion
$path = $pathSymbol + " " + (Get-FullPath -dir $pwd) + " "
$prompt += Write-Prompt -Object $path -ForegroundColor $sl.Colors.DriveForegroundColor -BackgroundColor $sl.Colors.SessionInfoBackgroundColor
$status = Get-VCSStatus
if ($status) {
$themeInfo = Get-VcsInfo -status ($status)
$prompt += Write-Prompt -Object $sl.PromptSymbols.SegmentSubForwardSymbol -ForegroundColor $sl.Colors.PromptForegroundColor -BackgroundColor $sl.Colors.SessionInfoBackgroundColor
$prompt += Write-Prompt -Object " $($themeInfo.VcInfo) " -ForegroundColor $themeInfo.BackgroundColor -BackgroundColor $sl.Colors.SessionInfoBackgroundColor
}
If ($with) {
$sWith = " $($with.ToUpper())"
$prompt += Write-Prompt -Object $sl.PromptSymbols.SegmentSubForwardSymbol -ForegroundColor $sl.Colors.PromptForegroundColor -BackgroundColor $sl.Colors.SessionInfoBackgroundColor
$prompt += Write-Prompt -Object $sWith -ForegroundColor $sl.Colors.WithForegroundColor -BackgroundColor $sl.Colors.SessionInfoBackgroundColor
}
$prompt += Write-Prompt -Object $sl.PromptSymbols.SegmentForwardSymbol -ForegroundColor $sl.Colors.SessionInfoBackgroundColor
###
## Right Part
$rightElements = New-Object 'System.Collections.Generic.List[Tuple[string,ConsoleColor]]'
$login = $sl.CurrentUser
$computer = [System.Environment]::MachineName;
$rightElements.Add([System.Tuple]::Create($sl.PromptSymbols.SegmentBackwardSymbol, $sl.Colors.SessionInfoBackgroundColor))
# List of all right elements
if (Test-VirtualEnv) {
$rightElements.Add([System.Tuple]::Create(" $(Get-VirtualEnvName) $venvsymbol ", $sl.Colors.VirtualEnvForegroundColor))
$rightElements.Add([System.Tuple]::Create($sl.PromptSymbols.SegmentSubBackwardSymbol, $sl.Colors.PromptForegroundColor))
}
if (Test-Administrator) {
$rightElements.Add([System.Tuple]::Create(" $adminsymbol", $sl.Colors.AdminIconForegroundColor))
}
$rightElements.Add([System.Tuple]::Create(" $login@$computer ", $sl.Colors.UserForegroundColor))
$rightElements.Add([System.Tuple]::Create($sl.PromptSymbols.SegmentSubBackwardSymbol, $sl.Colors.PromptForegroundColor))
$rightElements.Add([System.Tuple]::Create(" $(Get-Date -Format HH:mm:ss) $clocksymbol ", $sl.Colors.TimestampForegroundColor))
$lengthList = [Linq.Enumerable]::Select($rightElements, [Func[Tuple[string, ConsoleColor], int]] { $args[0].Item1.Length })
$total = [Linq.Enumerable]::Sum($lengthList)
# Transform into total length
$prompt += Set-CursorForRightBlockWrite -textLength $total
# The line head needs special care and is always drawn
$prompt += Write-Prompt -Object $rightElements[0].Item1 -ForegroundColor $sl.Colors.SessionInfoBackgroundColor
for ($i = 1; $i -lt $rightElements.Count; $i++) {
$prompt += Write-Prompt -Object $rightElements[$i].Item1 -ForegroundColor $rightElements[$i].Item2 -BackgroundColor $sl.Colors.SessionInfoBackgroundColor
}
###
$prompt += Write-Prompt -Object "`r"
$prompt += Set-Newline
# Writes the postfixes to the prompt
$indicatorColor = If ($lastCommandFailed) { $sl.Colors.CommandFailedIconForegroundColor } Else { $sl.Colors.PromptSymbolColor }
$prompt += Write-Prompt -Object $sl.PromptSymbols.PromptIndicator -ForegroundColor $indicatorColor
$prompt += ' '
$prompt
}
$sl = $global:ThemeSettings #local settings
$sl.PromptSymbols.StartSymbol = [char]::ConvertFromUtf32(0xe62a)
$sl.PromptSymbols.PromptIndicator = [char]::ConvertFromUtf32(0x276F)
$sl.PromptSymbols.SegmentForwardSymbol = [char]::ConvertFromUtf32(0xE0B0)
$sl.PromptSymbols.SegmentSubForwardSymbol = [char]::ConvertFromUtf32(0xE0B1)
$sl.PromptSymbols.SegmentBackwardSymbol = [char]::ConvertFromUtf32(0xE0B2)
$sl.PromptSymbols.SegmentSubBackwardSymbol = [char]::ConvertFromUtf32(0xE0B3)
$sl.PromptSymbols.ClockSymbol = [char]::ConvertFromUtf32(0xf64f)
$sl.PromptSymbols.PathHomeSymbol = [char]::ConvertFromUtf32(0xf015)
$sl.PromptSymbols.PathSymbol = [char]::ConvertFromUtf32(0xf07c)
$sl.Colors.PromptBackgroundColor = [ConsoleColor]::DarkGray
$sl.Colors.SessionInfoBackgroundColor = [ConsoleColor]::DarkGray
$sl.Colors.VirtualEnvBackgroundColor = [ConsoleColor]::DarkGray
$sl.Colors.PromptSymbolColor = [ConsoleColor]::Green
$sl.Colors.CommandFailedIconForegroundColor = [ConsoleColor]::DarkRed
$sl.Colors.DriveForegroundColor = [ConsoleColor]::Cyan
$sl.Colors.PromptForegroundColor = [ConsoleColor]::Gray
$sl.Colors.SessionInfoForegroundColor = [ConsoleColor]::White
$sl.Colors.WithForegroundColor = [ConsoleColor]::Red
$sl.Colors.VirtualEnvForegroundColor = [System.ConsoleColor]::Magenta
$sl.Colors.TimestampForegroundColor = [ConsoleColor]::Green
$sl.Colors.UserForegroundColor = [ConsoleColor]::Yellow
$sl.Colors.GitForegroundColor = [ConsoleColor]::White # Just in case...
#requires -Version 2 -Modules posh-git
function Write-Theme {
param(
[bool]
$lastCommandFailed,
[string]
$with
)
# path
$sPath = "$(Get-FullPath -dir $pwd) "
# check for elevated prompt
$sAdmin = ""
If (Test-Administrator) {
$sAdmin = " $($sl.PromptSymbols.ElevatedSymbol)"
}
# git info
$sVcs = ""
#$vcsInfo = $sl.Colors.DriveForegroundColor
If ($vcsStatus = Get-VCSStatus) {
$vcsInfo = Get-VcsInfo -status ($vcsStatus)
$sVcs = "$($vcsInfo.VcInfo) "
}
# timestamp
$sTime = " $(Get-Date -Format HH:mm:ss)"
# check the last command state and indicate if failed
$sFailed = ""
If ($lastCommandFailed) {
$sFailed = " $($sl.PromptSymbols.FailedCommandSymbol)"
}
# virtualenv
$sVenv = ""
If (Test-VirtualEnv) {
$sVenv = " $(Get-VirtualEnvName)"
}
# with
$sWith = ""
If ($with) {
$sWith = " $($with.ToUpper())"
}
$rightPrompt = "$sFailed$sWith$sVenv$sAdmin$sTime"
$prompt += Set-CursorForRightBlockWrite -textLength $rightPrompt.Length
$prompt += Write-Prompt -Object $sFailed -ForegroundColor $sl.Colors.CommandFailedIconForegroundColor
$prompt += Write-Prompt -Object $sWith -ForegroundColor $sl.Colors.WithForegroundColor
$prompt += Write-Prompt -Object $sVenv -ForegroundColor $sl.Colors.VirtualEnvForegroundColor
$prompt += Write-Prompt -Object $sAdmin -ForegroundColor $sl.Colors.AdminIconForegroundColor
$prompt += Write-Prompt -Object $sTime -ForegroundColor $sl.colors.TimestampForegroundColor
$prompt += Write-Prompt -Object "`r"
$prompt += Write-Prompt -Object $sPath -ForegroundColor $sl.Colors.DriveForegroundColor
$prompt += Write-Prompt -Object $sVcs -ForegroundColor $vcsInfo.BackgroundColor
If ($sl.DoubleCommandLine) {
$prompt += Set-Newline
}
# Writes the postfixes to the prompt
$indicatorColor = If ($lastCommandFailed) { $sl.Colors.CommandFailedIconForegroundColor } Else { $sl.Colors.PromptSymbolColor }
$prompt += Write-Prompt -Object $sl.PromptSymbols.PromptIndicator -ForegroundColor $indicatorColor
$prompt += ' '
$prompt
}
$sl = $global:ThemeSettings #local settings
$sl.PromptSymbols.PromptIndicator = [char]::ConvertFromUtf32(0x276F)
$sl.Colors.PromptForegroundColor = [ConsoleColor]::White
$sl.Colors.PromptSymbolColor = [ConsoleColor]::Green
$sl.Colors.PromptHighlightColor = [ConsoleColor]::DarkBlue
$sl.Colors.WithForegroundColor = [ConsoleColor]::DarkRed
$sl.Colors.VirtualEnvForegroundColor = [System.ConsoleColor]::Magenta
$sl.Colors.TimestampForegroundColor = [ConsoleColor]::DarkCyan
$sl | Add-Member -NotePropertyName DoubleCommandLine -NotePropertyValue 0 -Force
#requires -Version 2 -Modules posh-git
function Write-Theme {
param(
[bool]
$lastCommandFailed,
[string]
$with
)
$adminsymbol = $sl.PromptSymbols.ElevatedSymbol
$venvsymbol = $sl.PromptSymbols.VirtualEnvSymbol
$lastColor = $sl.Colors.SessionInfoBackgroundColor
$login = $sl.CurrentUser
$computer = (Get-Culture).TextInfo.ToTitleCase([System.Environment]::MachineName.ToLower());
if ($IsLinux) { $iconhex = 0xf17c }
elseif ($IsMacOS) { $iconhex = 0xf302 }
else { $iconhex = 0xe70f }
## Left Part
$prompt = Write-Prompt -Object "╔═" -ForegroundColor $sl.Colors.PromptSymbolColor
$prompt += Write-Prompt -Object " $([char]::ConvertFromUtf32($iconhex))" -ForegroundColor $sl.Colors.StartForegroundColor
$prompt += Write-Prompt -Object " $($sl.PromptSymbols.SegmentSubForwardSymbol)" -ForegroundColor $sl.Colors.UserForegroundColor
$prompt += Write-Prompt -Object " $login@$computer " -ForegroundColor $sl.Colors.UserForegroundColor
$prompt += Write-Prompt -Object "$($sl.PromptSymbols.SegmentForwardSymbol) " -ForegroundColor $sl.Colors.PromptSymbolColor -BackgroundColor $sl.Colors.SessionInfoBackgroundColor
$pathSymbol = if ($pwd.Path -eq $HOME) { $sl.PromptSymbols.PathHomeSymbol } else { $sl.PromptSymbols.PathSymbol }
# Writes the drive portion
$path = $pathSymbol + " " + (Get-ShortPath -dir $pwd) + " "
$prompt += Write-Prompt -Object $path -ForegroundColor $sl.Colors.DriveForegroundColor -BackgroundColor $sl.Colors.SessionInfoBackgroundColor
$status = Get-VCSStatus
if ($status) {
$themeInfo = Get-VcsInfo -status ($status)
$lastColor = $themeInfo.BackgroundColor
$prompt += Write-Prompt -Object $sl.PromptSymbols.SegmentForwardSymbol -ForegroundColor $sl.Colors.SessionInfoBackgroundColor -BackgroundColor $themeInfo.BackgroundColor
$prompt += Write-Prompt -Object " $($themeInfo.VcInfo) " -ForegroundColor $sl.Colors.PromptForegroundColor -BackgroundColor $themeInfo.BackgroundColor
}
If ($with) {
$sWith = " $($with.ToUpper())"
$prompt += Write-Prompt -Object $sl.PromptSymbols.SegmentSubForwardSymbol -ForegroundColor $sl.Colors.PromptForegroundColor -BackgroundColor $sl.Colors.SessionInfoBackgroundColor
$prompt += Write-Prompt -Object $sWith -ForegroundColor $sl.Colors.WithForegroundColor -BackgroundColor $sl.Colors.SessionInfoBackgroundColor
}
$prompt += Write-Prompt -Object $sl.PromptSymbols.SegmentForwardSymbol -ForegroundColor $lastColor
###
## Right Part
$rightElements = New-Object 'System.Collections.Generic.List[Tuple[string,ConsoleColor]]'
$rightElements.Add([System.Tuple]::Create($sl.PromptSymbols.SegmentBackwardSymbol, $sl.Colors.StatsInfoBackgroundColor))
# List of all right elements
if (Test-VirtualEnv) {
$rightElements.Add([System.Tuple]::Create(" $(Get-VirtualEnvName) $venvsymbol ", $sl.Colors.VirtualEnvForegroundColor))
$rightElements.Add([System.Tuple]::Create($sl.PromptSymbols.SegmentSubBackwardSymbol, $sl.Colors.PromptForegroundColor))
}
if (Test-Administrator) {
$rightElements.Add([System.Tuple]::Create(" $adminsymbol", $sl.Colors.AdminIconForegroundColor))
}
$battery = Get-BatteryInfo
if ($battery) {
$rightElements.Add([System.Tuple]::Create(" $battery ", $sl.Colors.PromptForegroundColor))
$rightElements.Add([System.Tuple]::Create($sl.PromptSymbols.SegmentSubBackwardSymbol, $sl.Colors.PromptForegroundColor))
}
# Update the clock icon based on time
[int]$hour = Get-Date -UFormat %I
switch ($hour) {
1 { $clockhex = 0xe382 }
2 { $clockhex = 0xe383 }
3 { $clockhex = 0xe384 }
4 { $clockhex = 0xe385 }
5 { $clockhex = 0xe386 }
6 { $clockhex = 0xe387 }
7 { $clockhex = 0xe388 }
8 { $clockhex = 0xe389 }
9 { $clockhex = 0xe38a }
10 { $clockhex = 0xe38b }
11 { $clockhex = 0xe38c }
Default { $clockhex = 0xe381 }
}
$clocksymbol = [char]::ConvertFromUtf32($clockhex)
$rightElements.Add([System.Tuple]::Create(" $(Get-Date -Format HH:mm:ss) $clocksymbol ", $sl.Colors.PromptForegroundColor))
$lengthList = [Linq.Enumerable]::Select($rightElements, [Func[Tuple[string, ConsoleColor], int]] { $args[0].Item1.Length })
$total = [Linq.Enumerable]::Sum($lengthList)
# Transform into total length
$prompt += Set-CursorForRightBlockWrite -textLength $total
# The line head needs special care and is always drawn
$prompt += Write-Prompt -Object $rightElements[0].Item1 -ForegroundColor $sl.Colors.StatsInfoBackgroundColor
for ($i = 1; $i -lt $rightElements.Count; $i++) {
$prompt += Write-Prompt -Object $rightElements[$i].Item1 -ForegroundColor $rightElements[$i].Item2 -BackgroundColor $sl.Colors.StatsInfoBackgroundColor
}
###
$prompt += Write-Prompt -Object "`r"
$prompt += Set-Newline
# Writes the postfixes to the prompt
$indicatorColor = If ($lastCommandFailed) { $sl.Colors.CommandFailedIconForegroundColor } Else { $sl.Colors.PromptSymbolColor }
$prompt += Write-Prompt -Object "╚═" -ForegroundColor $indicatorColor
$prompt += ' '
$prompt
}
$sl = $global:ThemeSettings #local settings
$sl.PromptSymbols.PromptIndicator = [char]::ConvertFromUtf32(0x276F)
$sl.PromptSymbols.SegmentForwardSymbol = [char]::ConvertFromUtf32(0xE0B0)
$sl.PromptSymbols.SegmentSubForwardSymbol = [char]::ConvertFromUtf32(0xE0B1)
$sl.PromptSymbols.SegmentBackwardSymbol = [char]::ConvertFromUtf32(0xE0B2)
$sl.PromptSymbols.SegmentSubBackwardSymbol = [char]::ConvertFromUtf32(0xE0B3)
$sl.PromptSymbols.PathHomeSymbol = [char]::ConvertFromUtf32(0xf015)
$sl.PromptSymbols.PathSymbol = [char]::ConvertFromUtf32(0xf07c)
$sl.Colors.PromptBackgroundColor = [ConsoleColor]::DarkGray
$sl.Colors.SessionInfoBackgroundColor = [ConsoleColor]::DarkBlue
$sl.Colors.StatsInfoBackgroundColor = [ConsoleColor]::Black
$sl.Colors.VirtualEnvBackgroundColor = [ConsoleColor]::DarkGray
$sl.Colors.PromptSymbolColor = [ConsoleColor]::Blue
$sl.Colors.CommandFailedIconForegroundColor = [ConsoleColor]::DarkRed
$sl.Colors.DriveForegroundColor = [ConsoleColor]::Cyan
$sl.Colors.PromptForegroundColor = [ConsoleColor]::White
$sl.Colors.SessionInfoForegroundColor = [ConsoleColor]::White
$sl.Colors.StartForegroundColor = [ConsoleColor]::Blue
$sl.Colors.WithForegroundColor = [ConsoleColor]::Red
$sl.Colors.VirtualEnvForegroundColor = [ConsoleColor]::Magenta
$sl.Colors.UserForegroundColor = [ConsoleColor]::White
#requires -Version 2 -Modules posh-git
function Write-Theme {
param(
[bool]
$lastCommandFailed,
[string]
$with
)
$lastColor = $sl.Colors.PromptBackgroundColor
$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 = $sl.CurrentUser
$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
$path = (Get-FullPath -dir $pwd).Replace('\', ' ' + [char]::ConvertFromUtf32(0xE0B1) + ' ') + ' '
$prompt += Write-Prompt -Object $path -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 += ' '
$prompt
}
$sl = $global:ThemeSettings #local settings
$sl.PromptSymbols.SegmentForwardSymbol = [char]::ConvertFromUtf32(0xE0B0)
$sl.Colors.SessionInfoBackgroundColor = [ConsoleColor]::DarkGray
$sl.Colors.PromptForegroundColor = [ConsoleColor]::White
$sl.Colors.PromptSymbolColor = [ConsoleColor]::White
$sl.Colors.PromptHighlightColor = [ConsoleColor]::DarkBlue
$sl.Colors.GitForegroundColor = [ConsoleColor]::DarkGray
$sl.Colors.WithForegroundColor = [ConsoleColor]::White
$sl.Colors.WithBackgroundColor = [ConsoleColor]::DarkRed
$sl.Colors.VirtualEnvBackgroundColor = [System.ConsoleColor]::Red
$sl.Colors.VirtualEnvForegroundColor = [System.ConsoleColor]::White
#requires -Version 2 -Modules posh-git
function Write-Theme {
param(
[bool]
$lastCommandFailed,
[string]
$with
)
$lastColor = $sl.Colors.PromptBackgroundColor
$authorityStatus = ((Invoke-CimMethod -InputObject $(Get-CimInstance Win32_Process -Filter "Handle=$PID") -MethodName GetOwner).User) -eq 'SYSTEM'
# identify background colors for administrative rights
# declare the colors
$rootBackground = [ConsoleColor]::Magenta
$rootForeground = [ConsoleColor]::White
$reguserBackground = [ConsoleColor]::Blue
$reguserForeground = [ConsoleColor]::White
$authorityForeground = [ConsoleColor]::White
$authorityBackground = [ConsoleColor]::Red
# make it work
If ($authorityStatus) {
$promptTagBackground = $authorityBackground
$promptTagForeground = $authorityForeground
}
else {
If (Test-Administrator) {
$promptTagBackground = $rootBackground
$rootForeground = $rootForeground
}
else {
$promptTagBackground = $reguserBackground
$promptTagForeground = $reguserForeground
}
}
$prompt = Write-Prompt -Object $sl.PromptSymbols.StartSymbol -ForegroundColor $sl.Colors.SessionInfoForegroundColor -BackgroundColor $sl.Colors.SessionInfoBackgroundColor
$user = $sl.CurrentUser
$computer = [System.Environment]::MachineName
if ($authorityStatus) {
$prompt += Write-Prompt -Object "$computer" -ForegroundColor $sl.Colors.SessionInfoForegroundColor -BackgroundColor $sl.Colors.SessionInfoBackgroundColor
}
else {
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
$path = (Get-ShortPath -dir $pwd).Replace('\', ' ' + [char]::ConvertFromUtf32(0xE0B1) + ' ') + ' '
$prompt += Write-Prompt -Object $path -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
}
If ($lastCommandFailed) {
$errsign = "ERROR".Replace('\', ' ' + [char]::ConvertFromUtf32(0xE0B1) + ' ') + ' '
$prompt += Write-Prompt -Object "$($sl.PromptSymbols.SegmentForwardSymbol) " -ForegroundColor $lastColor -BackgroundColor $errBackground
$prompt += Write-Prompt -Object $errsign -ForegroundColor $errForeground -BackgroundColor $errBackground
$lastColor = $errBackground
$promptTagBackgroundStatusErrCheck = $errBackground
}
else {
$promptTagBackgroundStatusErrCheck = $promptTagBackground
}
If ($authorityStatus) {
$authoritysign = "@".Replace('\', ' ' + [char]::ConvertFromUtf32(0xE0B1) + ' ') + ' '
$prompt += Write-Prompt -Object "$($sl.PromptSymbols.SegmentForwardSymbol) " -ForegroundColor $lastColor -BackgroundColor $promptTagBackgroundStatusErrCheck
$prompt += Write-Prompt -Object $authoritysign -ForegroundColor $promptTagForeground -BackgroundColor $promptTagBackgroundStatusErrCheck
$prompt += Write-Prompt -Object $sl.PromptSymbols.SegmentForwardSymbol -ForegroundColor $promptTagBackgroundStatusErrCheck -BackgroundColor $sl.Colors.SessionInfoForegroundColor
}
else {
If (Test-Administrator) {
$rootsign = "#".Replace('\', ' ' + [char]::ConvertFromUtf32(0xE0B1) + ' ') + ' '
$prompt += Write-Prompt -Object "$($sl.PromptSymbols.SegmentForwardSymbol) " -ForegroundColor $lastColor -BackgroundColor $promptTagBackgroundStatusErrCheck
$prompt += Write-Prompt -Object $rootsign -ForegroundColor $promptTagForeground -BackgroundColor $promptTagBackgroundStatusErrCheck
$prompt += Write-Prompt -Object $sl.PromptSymbols.SegmentForwardSymbol -ForegroundColor $promptTagBackgroundStatusErrCheck -BackgroundColor $sl.Colors.SessionInfoForegroundColor
}
else {
$norootsign = "$".Replace('\', ' ' + [char]::ConvertFromUtf32(0xE0B1) + ' ') + ' '
$prompt += Write-Prompt -Object "$($sl.PromptSymbols.SegmentForwardSymbol) " -ForegroundColor $lastColor -BackgroundColor $promptTagBackgroundStatusErrCheck
$prompt += Write-Prompt -Object $norootsign -ForegroundColor $promptTagForeground -BackgroundColor $promptTagBackgroundStatusErrCheck
$prompt += Write-Prompt -Object $sl.PromptSymbols.SegmentForwardSymbol -ForegroundColor $promptTagBackgroundStatusErrCheck -BackgroundColor $sl.Colors.SessionInfoForegroundColor
}
}
# Writes the postfix to the prompt
$prompt += ' '
$prompt
}
$sl = $global:ThemeSettings #local settings
$sl.PromptSymbols.SegmentForwardSymbol = [char]::ConvertFromUtf32(0xE0B0)
$sl.Colors.SessionInfoBackgroundColor = [ConsoleColor]::Cyan
$sl.Colors.SessionInfoForegroundColor = [ConsoleColor]::Black
$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
$errForeground = [ConsoleColor]::White
$errBackground = [ConsoleColor]::DarkRed
#requires -Version 2 -Modules posh-git
function Write-Theme {
param(
[bool]
$lastCommandFailed,
[string]
$with
)
#check the last command state and indicate if failed
If ($lastCommandFailed) {
$prompt = Write-Prompt -Object "Don't Panic!" -ForegroundColor $sl.Colors.CommandFailedIconForegroundColor
}
$prompt += Set-Newline
#check for elevated prompt
If (Test-Administrator) {
$prompt += Write-Prompt -Object "$($sl.PromptSymbols.ElevatedSymbol) " -ForegroundColor $sl.Colors.AdminIconForegroundColor
}
$status = Get-VCSStatus
if ($status) {
$prompt += Write-Prompt -Object "$($status.Branch)$([char]::ConvertFromUtf32(0xE0A0)) " -ForegroundColor $themeInfo.BackgroundColor
}
# write virtualenv
if (Test-VirtualEnv) {
$prompt += Write-Prompt -Object "$(Get-VirtualEnvName)" -ForegroundColor $themeInfo.VirtualEnvForegroundColor
}
# Writes the drive portion
$prompt += Write-Prompt -Object " $(Get-FullPath -dir $pwd)" -ForegroundColor $sl.Colors.DriveForegroundColor
# Writes the postfixes to the prompt
$prompt += Write-Prompt -Object $sl.PromptSymbols.PromptIndicator -ForegroundColor $sl.Colors.DriveForegroundColor
$prompt += ' '
$prompt
}
$sl = $global:ThemeSettings #local settings
$sl.PromptSymbols.PromptIndicator = [char]::ConvertFromUtf32(0x276F)
$sl.Colors.PromptForegroundColor = [ConsoleColor]::White
$sl.Colors.PromptSymbolColor = [ConsoleColor]::White
$sl.Colors.PromptHighlightColor = [ConsoleColor]::DarkBlue
$sl.Colors.WithForegroundColor = [ConsoleColor]::DarkRed
$sl.Colors.WithBackgroundColor = [ConsoleColor]::Magenta
#requires -Version 2 -Modules posh-git
function Write-Theme {
param(
[bool]
$lastCommandFailed,
[string]
$with
)
#check the last command state and indicate if failed
$promtSymbolColor = $sl.Colors.PromptSymbolColor
If ($lastCommandFailed) {
$promtSymbolColor = $sl.Colors.WithForegroundColor
}
# Writes the drive portion
$drive = Get-FullPath -dir $pwd
$prompt += Write-Prompt -Object $drive -ForegroundColor $sl.Colors.DriveForegroundColor
$prompt += Write-Prompt -Object ' '
$status = Get-VCSStatus
if ($status) {
$prompt += Write-Prompt -Object "$($status.Branch)" -ForegroundColor $sl.Colors.WithForegroundColor
if ($status.Working.Length -gt 0) {
$prompt += Write-Prompt -Object (" " + $sl.PromptSymbols.GitDirtyIndicator) -ForegroundColor $sl.Colors.GitDefaultColor
}
}
# New line
$prompt += Set-Newline
# Writes the postfixes to the prompt
$prompt += Write-Prompt -Object ($sl.PromptSymbols.PromptIndicator) -ForegroundColor $promtSymbolColor
$prompt += ' '
$prompt
}
$sl = $global:ThemeSettings #local settings
$sl.PromptSymbols.PromptIndicator = [char]::ConvertFromUtf32(0x276f)
$sl.Colors.PromptSymbolColor = [ConsoleColor]::Green
$sl.Colors.PromptHighlightColor = [ConsoleColor]::Blue
$sl.Colors.DriveForegroundColor = [ConsoleColor]::Cyan
$sl.Colors.WithForegroundColor = [ConsoleColor]::Red
$sl.PromptSymbols.GitDirtyIndicator = [char]::ConvertFromUtf32(10007)
$sl.Colors.GitDefaultColor = [ConsoleColor]::Yellow
#requires -Version 2 -Modules posh-git
function Write-Theme {
param(
[bool]
$lastCommandFailed,
[string]
$with
)
$prompt = Write-Prompt -Object $sl.PromptSymbols.StartSymbol -ForegroundColor $sl.Colors.PromptForegroundColor
#check for elevated prompt
If (Test-Administrator) {
$prompt += Write-Prompt -Object "$($sl.PromptSymbols.ElevatedSymbol) " -ForegroundColor $sl.Colors.AdminIconForegroundColor
}
$drive = $sl.PromptSymbols.HomeSymbol
if ($pwd.Path -ne $HOME) {
$drive = "$(Split-Path -path $pwd -Leaf)"
}
$prompt += Write-Prompt -Object $drive -ForegroundColor $sl.Colors.PromptForegroundColor
$status = Get-VCSStatus
if ($status) {
$themeInfo = Get-VcsInfo -status ($status)
$lastColor = $themeInfo.BackgroundColor
$prompt += Write-Prompt -Object " ::" -ForegroundColor $sl.Colors.AccentColor
$prompt += Write-Prompt -Object " $($status.Branch)" -ForegroundColor $lastColor
}
#check the last command state and indicate if failed
If ($lastCommandFailed) {
$prompt += Write-Prompt -Object " $($sl.PromptSymbols.FailedCommandSymbol)" -ForegroundColor $sl.Colors.CommandFailedIconForegroundColor
}
if (Test-VirtualEnv) {
$prompt += Write-Prompt -Object " $($sl.PromptSymbols.VirtualEnvSymbol)" -ForegroundColor $sl.Colors.AccentColor
$prompt += Write-Prompt -Object " $(Get-VirtualEnvName)" -ForegroundColor $sl.Colors.VirtualEnvForegroundColor
}
if ($with) {
$prompt += Write-Prompt -Object " *" -ForegroundColor $sl.Colors.AccentColor
$prompt += Write-Prompt -Object " $($with.ToUpper())" -ForegroundColor $sl.Colors.WithForegroundColor
}
$prompt += Write-Prompt -Object (" " + $sl.PromptSymbols.PromptIndicator) -ForegroundColor $sl.Colors.AccentColor
$prompt += ' '
$prompt
}
$sl = $global:ThemeSettings #local settings
$sl.PromptSymbols.StartSymbol = ''
$sl.PromptSymbols.PromptIndicator = [char]::ConvertFromUtf32(0x276f)
$sl.Colors.PromptForegroundColor = [ConsoleColor]::Cyan
$sl.Colors.WithForegroundColor = [ConsoleColor]::Red
$sl.Colors.PromptHighlightColor = [ConsoleColor]::Cyan
$sl.Colors.WithBackgroundColor = [ConsoleColor]::Magenta
$sl.Colors.PromptSymbolColor = [ConsoleColor]::White
$sl.Colors.VirtualEnvBackgroundColor = [System.ConsoleColor]::Magenta
$sl.Colors.VirtualEnvForegroundColor = [System.ConsoleColor]::Magenta
$sl.Colors.AccentColor = [System.ConsoleColor]::DarkGray
#requires -Version 2 -Modules posh-git
function Write-Theme {
param(
[bool]
$lastCommandFailed,
[string]
$with
)
#check the last command state and indicate if failed
$promtSymbolColor = $sl.Colors.PromptSymbolColor
If ($lastCommandFailed) {
$promtSymbolColor = $sl.Colors.WithForegroundColor
}
#check the python virtual environment
If (Test-VirtualEnv) {
$prompt += Write-Prompt -Object ("(" + $(Get-VirtualEnvName) + ") ")
}
# Writes the postfixes to the prompt
$prompt += Write-Prompt -Object ($sl.PromptSymbols.PromptIndicator + " ") -ForegroundColor $promtSymbolColor
# Writes the drive portion
$drive = $sl.PromptSymbols.HomeSymbol
if ($pwd.Path -ne $HOME) {
$drive = "$(Split-Path -path $pwd -Leaf)"
}
$prompt += Write-Prompt -Object $drive -ForegroundColor $sl.Colors.DriveForegroundColor
$status = Get-VCSStatus
if ($status) {
$prompt += Write-Prompt -Object " git:(" -ForegroundColor $sl.Colors.PromptHighlightColor
$prompt += Write-Prompt -Object "$($status.Branch)" -ForegroundColor $sl.Colors.WithForegroundColor
$prompt += Write-Prompt -Object ")" -ForegroundColor $sl.Colors.PromptHighlightColor
if ($status.Working.Length -gt 0) {
$prompt += Write-Prompt -Object (" " + $sl.PromptSymbols.GitDirtyIndicator) -ForegroundColor $sl.Colors.GitDefaultColor
}
}
$prompt += ' '
$prompt
}
$sl = $global:ThemeSettings #local settings
$sl.PromptSymbols.PromptIndicator = [char]::ConvertFromUtf32(0x279C)
$sl.Colors.PromptSymbolColor = [ConsoleColor]::Green
$sl.Colors.PromptHighlightColor = [ConsoleColor]::Blue
$sl.Colors.DriveForegroundColor = [ConsoleColor]::Cyan
$sl.Colors.WithForegroundColor = [ConsoleColor]::Red
$sl.PromptSymbols.GitDirtyIndicator = [char]::ConvertFromUtf32(10007)
$sl.Colors.GitDefaultColor = [ConsoleColor]::Yellow
#requires -Version 2 -Modules posh-git
function Write-Theme {
param(
[bool]
$lastCommandFailed,
[string]
$with
)
#check the last command state and indicate if failed
If ($lastCommandFailed) {
$prompt = Write-Prompt -Object "$($sl.PromptSymbols.FailedCommandSymbol) " -ForegroundColor $sl.Colors.CommandFailedIconForegroundColor
}
#check for elevated prompt
If (Test-Administrator) {
$prompt += Write-Prompt -Object "$($sl.PromptSymbols.ElevatedSymbol) " -ForegroundColor $sl.Colors.AdminIconForegroundColor
}
$user = $sl.CurrentUser
if (Test-NotDefaultUser($user)) {
$prompt += Write-Prompt -Object "$user " -ForegroundColor $sl.Colors.PromptForegroundColor
}
# Writes the drive portion
$prompt += Write-Prompt -Object "$(Get-ShortPath -dir $pwd) " -ForegroundColor $sl.Colors.DriveForegroundColor
$status = Get-VCSStatus
if ($status) {
$themeInfo = Get-VcsInfo -status ($status)
$prompt += Write-Prompt -Object "git:" -ForegroundColor $sl.Colors.PromptForegroundColor
$prompt += Write-Prompt -Object "$($themeInfo.VcInfo) " -ForegroundColor $themeInfo.BackgroundColor
}
# write virtualenv
if (Test-VirtualEnv) {
$prompt += Write-Prompt -Object 'env:' -ForegroundColor $sl.Colors.PromptForegroundColor
$prompt += Write-Prompt -Object "$(Get-VirtualEnvName) " -ForegroundColor $themeInfo.VirtualEnvForegroundColor
}
if ($with) {
$prompt += Write-Prompt -Object "$($with.ToUpper()) " -BackgroundColor $sl.Colors.WithBackgroundColor -ForegroundColor $sl.Colors.WithForegroundColor
}
# Writes the postfixes to the prompt
$prompt += Write-Prompt -Object $sl.PromptSymbols.PromptIndicator -ForegroundColor $sl.Colors.CommandFailedIconForegroundColor
$prompt += Write-Prompt -Object $sl.PromptSymbols.PromptIndicator -ForegroundColor $sl.Colors.AdminIconForegroundColor
$prompt += Write-Prompt -Object $sl.PromptSymbols.PromptIndicator -ForegroundColor $sl.Colors.GitNoLocalChangesAndAheadColor
$prompt += ' '
$prompt
}
$sl = $global:ThemeSettings #local settings
$sl.PromptSymbols.PromptIndicator = [char]::ConvertFromUtf32(0x276F)
$sl.Colors.PromptForegroundColor = [ConsoleColor]::White
$sl.Colors.PromptSymbolColor = [ConsoleColor]::White
$sl.Colors.PromptHighlightColor = [ConsoleColor]::DarkBlue
$sl.Colors.WithForegroundColor = [ConsoleColor]::DarkRed
$sl.Colors.WithBackgroundColor = [ConsoleColor]::Magenta
#requires -Version 2 -Modules posh-git
function Write-Theme {
param(
[bool]
$lastCommandFailed,
[string]
$with
)
#check the last command state and indicate if failed and change the colors of the arrows
$dir = Get-FullPath -dir $pwd
If ($lastCommandFailed) {
$prompt += Write-Prompt -Object $dir -ForegroundColor $sl.Colors.WithForegroundColor
}else{
$prompt += Write-Prompt -Object $dir -ForegroundColor $sl.Colors.DriveForegroundColor
}
# Writes the drive portion
$status = Get-VCSStatus
if ($status) {
$prompt += Write-Prompt -Object " on " -ForegroundColor $sl.Colors.PromptForegroundColor
$prompt += Write-Prompt -Object "$($sl.GitSymbols.BranchSymbol+' ')" -ForegroundColor $sl.Colors.GitDefaultColor
$prompt += Write-Prompt -Object "$($status.Branch)" -ForegroundColor $sl.Colors.GitDefaultColor
$prompt += Write-Prompt -Object "[?!]" -ForegroundColor $sl.Colors.PromptHighlightColor
$filename = 'package.json'
if (Test-Path -path $filename) {
$prompt += Write-Prompt -Object (" via node") -ForegroundColor $sl.Colors.PromptSymbolColor
}
}
if ($with) {
$prompt += Write-Prompt -Object "$($with.ToUpper()) " -BackgroundColor $sl.Colors.WithBackgroundColor -ForegroundColor $sl.Colors.WithForegroundColor
}
$prompt+= Set-Newline
$prompt += Write-Prompt -Object ($sl.PromptSymbols.PromptIndicator) -ForegroundColor $sl.Colors.PromptSymbolColor
$prompt += ' '
$prompt
}
$sl = $global:ThemeSettings #local settings
$sl.GitSymbols.BranchSymbol = [char]::ConvertFromUtf32(0xE0A0)
$sl.PromptSymbols.PromptIndicator = [char]::ConvertFromUtf32(0x279C)
$sl.PromptSymbols.HomeSymbol = '~'
$sl.PromptSymbols.GitDirtyIndicator =[char]::ConvertFromUtf32(10007)
$sl.Colors.PromptSymbolColor = [ConsoleColor]::Green
$sl.Colors.PromptHighlightColor = [ConsoleColor]::Blue
$sl.Colors.DriveForegroundColor = [ConsoleColor]::Cyan
$sl.Colors.WithForegroundColor = [ConsoleColor]::Red
$sl.Colors.GitDefaultColor = [ConsoleColor]::Yellow
#requires -Version 2 -Modules posh-git
function Write-Theme {
param(
[bool]
$lastCommandFailed,
[string]
$with
)
$user = $s1.CurrentUser
$prompt = Write-Prompt -Object "$user " -ForegroundColor $s1.Colors.PromptForegroundColor
$prompt += Write-Prompt -Object ":: " -ForegroundColor $s1.Colors.AdminIconForegroundColor
$prompt += Write-Prompt -Object "$(Get-FullPath -dir $pwd) " -ForegroundColor $s1.Colors.DriveForegroundColor
$status = Get-VCSStatus
if ($status) {
$gitbranchpre = [char]::ConvertFromUtf32(0x003c)
$gitbranchpost = [char]::ConvertFromUtf32(0x003e)
$gitinfo = get-vcsinfo -status $status
$prompt += Write-Prompt -Object "$gitbranchpre$($gitinfo.vcinfo)$gitbranchpost " -ForegroundColor $($gitinfo.backgroundcolor)
}
$prompt += Write-Prompt -Object $s1.PromptSymbols.PromptIndicator -ForegroundColor $s1.Colors.AdminIconForegroundColor
$prompt += ' '
$prompt
}
$s1 = $global:ThemeSettings
$s1.GitSymbols.BranchIdenticalStatusToSymbol = ""
$s1.GitSymbols.BranchSymbol = ""
$s1.GitSymbols.BranchUntrackedSymbol = "*"
$s1.PromptSymbols.PromptIndicator = [char]::ConvertFromUtf32(0x00BB)
# Colors
$s1.Colors.PromptForegroundColor = [ConsoleColor]::White
$s1.Colors.AdminIconForegroundColor = [ConsoleColor]::Blue
$s1.Colors.DriveForegroundColor = [ConsoleColor]::Green
#requires -Version 2 -Modules posh-git
function Write-Theme {
param(
[bool]
$lastCommandFailed,
[string]
$with
)
# check the last command state and indicate if failed
If ($lastCommandFailed) {
$prompt += Write-Prompt -Object "$($sl.PromptSymbols.FailedCommandSymbol) " -ForegroundColor $sl.Colors.CommandFailedIconForegroundColor
}
# write # and space
$prompt = Write-Prompt -Object $sl.PromptSymbols.StartSymbol -ForegroundColor $sl.Colors.PromptSymbolColor
# write user and host
$user = $sl.CurrentUser
if (Test-NotDefaultUser($user)) {
$prompt += Write-Prompt -Object " $user" -ForegroundColor $sl.Colors.PromptHighlightColor
# write at (devicename)
$computer = $sl.CurrentHostname
$prompt += Write-Prompt -Object " at" -ForegroundColor $foregroundColor
$prompt += Write-Prompt -Object " $computer" -ForegroundColor $sl.Colors.PromptForegroundColor
# write in for folder
$prompt += Write-Prompt -Object " in" -ForegroundColor $foregroundColor
}
# write folder
$dir = Get-FullPath -dir $pwd
$prompt += Write-Prompt -Object " $dir " -ForegroundColor $sl.Colors.GitDefaultColor
# write on (git:branchname status)
$status = Get-VCSStatus
if ($status) {
$themeInfo = Get-VcsInfo -status ($status)
$prompt += Write-Prompt -Object 'on git:' -ForegroundColor $foregroundColor
$prompt += Write-Prompt -Object "$($themeInfo.VcInfo) " -ForegroundColor $sl.Colors.GitForegroundColor
}
# write [time]
$timeStamp = Get-Date -Format T
$prompt += Write-Prompt "[$timeStamp]" -ForegroundColor $foregroundColor
# new line
$prompt += Set-Newline
if (Test-Administrator) {
$prompt += Write-Prompt -Object ($sl.PromptSymbols.ElevatedSymbol + " ") -ForegroundColor $sl.Colors.AdminIconForegroundColor
}
else{
$prompt += Write-Prompt -Object ($sl.PromptSymbols.PromptIndicator + " ") -ForegroundColor $sl.Colors.PromptSymbolColor
}
}
$sl = $global:ThemeSettings # local settings
$sl.PromptSymbols.StartSymbol = '#'
$sl.PromptSymbols.PromptIndicator = '%'
$sl.PromptSymbols.ElevatedSymbol = '$'
$sl.GitSymbols.BranchSymbol = ''
$sl.GitSymbols.BranchUntrackedSymbol = 'x'
$sl.GitSymbols.BranchIdenticalStatusToSymbol = 'o'
$sl.PromptSymbols.FailedCommandSymbol = '?'
# for dark theme
$sl.Colors.AdminIconForegroundColor = [ConsoleColor]::Red
$sl.Colors.PromptSymbolColor = [ConsoleColor]::Blue
$sl.Colors.PromptForegroundColor = [ConsoleColor]::Green
$sl.Colors.PromptHighlightColor = [ConsoleColor]::Cyan
$sl.Colors.GitDefaultColor = [ConsoleColor]::Yellow
$sl.Colors.GitForegroundColor = [ConsoleColor]::Cyan
# inspired by ys theme: not to use special characters (powerline fonts).
# >[https://blog.ysmood.org/my-ys-terminal-theme/]()
#requires -Version 2 -Modules posh-git
function Write-Theme {
param(
[bool]
$lastCommandFailed,
[string]
$with
)
$user=$sl.CurrentUser
$prompt+= Write-Prompt -Object ('@'+$user) -ForegroundColor $sl.Colors.WithForegroundColor
#check the last command state and indicate if failed and change the colors of the arrows
If ($lastCommandFailed) {
$prompt += Write-Prompt -Object (' '+$sl.PromptSymbols.PromptIndicator+' ') -ForegroundColor $sl.Colors.WithForegroundColor
}else{
$prompt += Write-Prompt -Object (' '+$sl.PromptSymbols.PromptIndicator+' ') -ForegroundColor $sl.Colors.PromptSymbolColor
}
# Writes the drive portion
$drive = $sl.PromptSymbols.HomeSymbol
if ($pwd.Path -ne $HOME) {
$drive = "$(Split-Path -path $pwd -Leaf)"
}
$prompt += Write-Prompt -Object $drive -ForegroundColor $sl.Colors.DriveForegroundColor
$status = Get-VCSStatus
if ($status) {
$prompt += Write-Prompt -Object " git(" -ForegroundColor $sl.Colors.PromptHighlightColor
$prompt += Write-Prompt -Object "$($status.Branch)" -ForegroundColor $sl.Colors.GitDefaultColor
$prompt += Write-Prompt -Object ")" -ForegroundColor $sl.Colors.PromptHighlightColor
if ($status.Working.Length -gt 0) {
$prompt += Write-Prompt -Object (" " + $sl.PromptSymbols.GitDirtyIndicator) -ForegroundColor $sl.Colors.PromptSymbolColor
}
}
if ($with) {
$prompt += Write-Prompt -Object "$($with.ToUpper()) " -BackgroundColor $sl.Colors.WithBackgroundColor -ForegroundColor $sl.Colors.WithForegroundColor
}
$prompt += ' '
$prompt
}
$sl = $global:ThemeSettings #local settings
$sl.PromptSymbols.PromptIndicator = [char]::ConvertFromUtf32(0x279C)
$sl.PromptSymbols.HomeSymbol = '~'
$sl.PromptSymbols.GitDirtyIndicator =[char]::ConvertFromUtf32(10007)
$sl.Colors.PromptSymbolColor = [ConsoleColor]::Green
$sl.Colors.PromptHighlightColor = [ConsoleColor]::Blue
$sl.Colors.DriveForegroundColor = [ConsoleColor]::Cyan
$sl.Colors.WithForegroundColor = [ConsoleColor]::Red
$sl.Colors.GitDefaultColor = [ConsoleColor]::Yellow
Log in or click on link to see number of positives.
- oh-my-posh.2.0.478.nupkg (ddd2fa000dd7) - ## / 64
In cases where actual malware is found, the packages are subject to removal. Software sometimes has false positives. Moderators do not necessarily validate the safety of the underlying software, only that a package retrieves software from the official distribution point and/or validate embedded software against official distribution point (where distribution rights allow redistribution).
Chocolatey Pro provides runtime protection from possible malware.
Add to Builder | Version | Downloads | Last Updated | Status |
---|---|---|---|---|
Oh-My-Posh 23.14.2 | 230 | Wednesday, September 25, 2024 | Approved | |
Oh-My-Posh 23.14.1 | 2197 | Friday, September 20, 2024 | Approved | |
Oh-My-Posh 23.13.4 | 257 | Thursday, September 19, 2024 | Approved | |
Oh-My-Posh 23.13.3 | 320 | Thursday, September 19, 2024 | Approved | |
Oh-My-Posh 23.13.1 | 2506 | Friday, September 13, 2024 | Approved | |
Oh-My-Posh 23.13.0 | 447 | Thursday, September 12, 2024 | Approved | |
Oh-My-Posh 23.12.0 | 1374 | Tuesday, September 10, 2024 | Approved | |
Oh-My-Posh 23.11.1 | 758 | Sunday, September 8, 2024 | Approved | |
Oh-My-Posh 23.11.0 | 13 | Sunday, September 8, 2024 | Approved | |
Oh-My-Posh 23.10.1 | 2319 | Monday, September 2, 2024 | Approved | |
Oh-My-Posh 23.9.1 | 1633 | Friday, August 30, 2024 | Approved | |
Oh-My-Posh 23.9.0 | 38 | Thursday, August 29, 2024 | Approved | |
Oh-My-Posh 23.8.0 | 1203 | Tuesday, August 27, 2024 | Approved | |
Oh-My-Posh 23.7.2 | 1799 | Friday, August 23, 2024 | Approved | |
Oh-My-Posh 23.7.1 | 208 | Thursday, August 22, 2024 | Approved | |
Oh-My-Posh 23.7.0 | 57 | Thursday, August 22, 2024 | Approved | |
Oh-My-Posh 23.6.8 | 651 | Wednesday, August 21, 2024 | Approved | |
Oh-My-Posh 23.6.7 | 721 | Tuesday, August 20, 2024 | Approved | |
Oh-My-Posh 23.6.6 | 775 | Monday, August 19, 2024 | Approved | |
Oh-My-Posh 23.6.5 | 670 | Monday, August 19, 2024 | Approved | |
Oh-My-Posh 23.6.3 | 2029 | Tuesday, August 13, 2024 | Approved | |
Oh-My-Posh 23.6.2 | 1277 | Friday, August 9, 2024 | Approved | |
Oh-My-Posh 23.6.1 | 786 | Thursday, August 8, 2024 | Approved | |
Oh-My-Posh 23.6.0 | 1444 | Wednesday, August 7, 2024 | Approved | |
Oh-My-Posh 23.5.0 | 100 | Tuesday, August 6, 2024 | Approved | |
Oh-My-Posh 23.4.1 | 1142 | Monday, August 5, 2024 | Approved | |
Oh-My-Posh 23.4.0 | 1429 | Thursday, August 1, 2024 | Approved | |
Oh-My-Posh 23.3.3 | 852 | Wednesday, July 31, 2024 | Approved | |
Oh-My-Posh 23.3.2 | 263 | Tuesday, July 30, 2024 | Approved | |
Oh-My-Posh 23.3.1 | 851 | Monday, July 29, 2024 | Approved | |
Oh-My-Posh 23.3.0 | 816 | Sunday, July 28, 2024 | Approved | |
Oh-My-Posh 23.2.1 | 204 | Saturday, July 27, 2024 | Approved | |
Oh-My-Posh 23.0.2 | 404 | Friday, July 26, 2024 | Approved | |
Oh-My-Posh 23.0.0 | 141 | Friday, July 26, 2024 | Approved | |
Oh-My-Posh 22.3.0 | 206 | Friday, July 26, 2024 | Approved | |
Oh-My-Posh 22.1.0 | 287 | Thursday, July 25, 2024 | Approved | |
Oh-My-Posh 22.0.3 | 1035 | Wednesday, July 24, 2024 | Approved | |
Oh-My-Posh 22.0.2 | 238 | Tuesday, July 23, 2024 | Approved | |
Oh-My-Posh 22.0.1 | 655 | Monday, July 22, 2024 | Approved | |
Oh-My-Posh 22.0.0 | 262 | Monday, July 22, 2024 | Approved | |
Oh-My-Posh 21.28.0 | 786 | Sunday, July 21, 2024 | Approved | |
Oh-My-Posh 21.27.0 | 1245 | Wednesday, July 17, 2024 | Approved | |
Oh-My-Posh 21.26.4 | 286 | Wednesday, July 17, 2024 | Approved | |
Oh-My-Posh 21.26.3 | 887 | Tuesday, July 16, 2024 | Approved | |
Oh-My-Posh 21.26.2 | 432 | Monday, July 15, 2024 | Approved | |
Oh-My-Posh 21.26.1 | 389 | Monday, July 15, 2024 | Approved | |
Oh-My-Posh 21.26.0 | 369 | Sunday, July 14, 2024 | Approved | |
Oh-My-Posh 21.25.0 | 651 | Friday, July 12, 2024 | Approved | |
Oh-My-Posh 21.24.0 | 253 | Friday, July 12, 2024 | Approved | |
Oh-My-Posh 21.23.4 | 454 | Thursday, July 11, 2024 | Approved | |
Oh-My-Posh 21.23.2 | 417 | Wednesday, July 10, 2024 | Approved | |
Oh-My-Posh 21.23.1 | 652 | Wednesday, July 10, 2024 | Approved | |
Oh-My-Posh 21.23.0 | 324 | Tuesday, July 9, 2024 | Approved | |
Oh-My-Posh 21.22.0 | 80 | Tuesday, July 9, 2024 | Approved | |
Oh-My-Posh 21.21.2 | 688 | Monday, July 8, 2024 | Approved | |
Oh-My-Posh 21.21.1 | 1133 | Saturday, July 6, 2024 | Approved | |
Oh-My-Posh 21.20.2 | 670 | Friday, July 5, 2024 | Approved | |
Oh-My-Posh 21.19.0 | 277 | Thursday, July 4, 2024 | Approved | |
Oh-My-Posh 21.17.2 | 2103 | Sunday, June 30, 2024 | Approved | |
Oh-My-Posh 21.17.1 | 459 | Saturday, June 29, 2024 | Approved | |
Oh-My-Posh 21.17.0 | 103 | Friday, June 28, 2024 | Approved | |
Oh-My-Posh 21.16.2 | 1785 | Tuesday, June 25, 2024 | Approved | |
Oh-My-Posh 21.16.1 | 613 | Monday, June 24, 2024 | Approved | |
Oh-My-Posh 21.16.0 | 1253 | Friday, June 21, 2024 | Approved | |
Oh-My-Posh 21.15.1 | 626 | Thursday, June 20, 2024 | Approved | |
Oh-My-Posh 21.14.0 | 764 | Wednesday, June 19, 2024 | Approved | |
Oh-My-Posh 21.13.1 | 724 | Tuesday, June 18, 2024 | Approved | |
Oh-My-Posh 21.13.0 | 392 | Tuesday, June 18, 2024 | Approved | |
Oh-My-Posh 21.12.1 | 262 | Tuesday, June 18, 2024 | Approved | |
Oh-My-Posh 21.12.0 | 180 | Monday, June 17, 2024 | Approved | |
Oh-My-Posh 21.11.0 | 269 | Monday, June 17, 2024 | Approved | |
Oh-My-Posh 21.10.2 | 502 | Sunday, June 16, 2024 | Approved | |
Oh-My-Posh 21.10.1 | 558 | Saturday, June 15, 2024 | Approved | |
Oh-My-Posh 21.10.0 | 186 | Saturday, June 15, 2024 | Approved | |
Oh-My-Posh 21.9.1 | 203 | Saturday, June 15, 2024 | Approved | |
Oh-My-Posh 21.9.0 | 176 | Friday, June 14, 2024 | Approved | |
Oh-My-Posh 21.7.0 | 539 | Thursday, June 13, 2024 | Approved | |
Oh-My-Posh 21.6.0 | 818 | Wednesday, June 12, 2024 | Approved | |
Oh-My-Posh 21.5.0 | 1314 | Monday, June 10, 2024 | Approved | |
Oh-My-Posh 21.3.0 | 1672 | Friday, June 7, 2024 | Approved | |
Oh-My-Posh 21.2.2 | 1117 | Wednesday, June 5, 2024 | Approved | |
Oh-My-Posh 21.2.1 | 272 | Wednesday, June 5, 2024 | Approved | |
Oh-My-Posh 21.2.0 | 914 | Monday, June 3, 2024 | Approved | |
Oh-My-Posh 21.1.0 | 772 | Saturday, June 1, 2024 | Approved | |
Oh-My-Posh 21.0.1 | 785 | Friday, May 31, 2024 | Approved | |
Oh-My-Posh 21.0.0 | 1124 | Wednesday, May 29, 2024 | Approved | |
Oh-My-Posh 20.2.2 | 1001 | Tuesday, May 28, 2024 | Approved | |
Oh-My-Posh 20.2.1 | 854 | Sunday, May 26, 2024 | Approved | |
Oh-My-Posh 20.2.0 | 1142 | Friday, May 24, 2024 | Approved | |
Oh-My-Posh 20.1.0 | 335 | Thursday, May 23, 2024 | Approved | |
Oh-My-Posh 20.0.2 | 1419 | Tuesday, May 21, 2024 | Approved | |
Oh-My-Posh 20.0.1 | 194 | Monday, May 20, 2024 | Approved | |
Oh-My-Posh 20.0.0 | 732 | Sunday, May 19, 2024 | Approved | |
Oh-My-Posh 19.32.0 | 334 | Sunday, May 19, 2024 | Approved | |
Oh-My-Posh 19.30.0 | 637 | Friday, May 17, 2024 | Approved | |
Oh-My-Posh 19.29.1 | 1323 | Wednesday, May 15, 2024 | Approved | |
Oh-My-Posh 19.29.0 | 952 | Monday, May 13, 2024 | Approved | |
Oh-My-Posh 19.28.0 | 1531 | Friday, May 10, 2024 | Approved | |
Oh-My-Posh 19.27.0 | 1547 | Tuesday, May 7, 2024 | Approved | |
Oh-My-Posh 19.26.1 | 1316 | Saturday, May 4, 2024 | Approved | |
Oh-My-Posh 19.25.0 | 1579 | Tuesday, April 30, 2024 | Approved | |
Oh-My-Posh 19.24.3 | 1991 | Thursday, April 25, 2024 | Approved | |
Oh-My-Posh 19.24.2 | 1421 | Monday, April 22, 2024 | Approved | |
Oh-My-Posh 19.24.1 | 1095 | Sunday, April 21, 2024 | Approved | |
Oh-My-Posh 19.24.0 | 215 | Saturday, April 20, 2024 | Approved | |
Oh-My-Posh 19.23.0 | 212 | Saturday, April 20, 2024 | Approved | |
Oh-My-Posh 19.21.1 | 43 | Friday, April 19, 2024 | Approved | |
Oh-My-Posh 19.21.0 | 817 | Thursday, April 18, 2024 | Approved | |
Oh-My-Posh 19.20.0 | 4329 | Wednesday, April 3, 2024 | Approved | |
Oh-My-Posh 19.19.0 | 1770 | Saturday, March 30, 2024 | Approved | |
Oh-My-Posh 19.18.1 | 3402 | Tuesday, March 19, 2024 | Approved | |
Oh-My-Posh 19.18.0 | 222 | Tuesday, March 19, 2024 | Approved | |
Oh-My-Posh 19.17.2 | 1651 | Friday, March 15, 2024 | Approved | |
Oh-My-Posh 19.17.1 | 367 | Thursday, March 14, 2024 | Approved | |
Oh-My-Posh 19.17.0 | 306 | Thursday, March 14, 2024 | Approved | |
Oh-My-Posh 19.16.1 | 1003 | Tuesday, March 12, 2024 | Approved | |
Oh-My-Posh 19.15.1 | 631 | Monday, March 11, 2024 | Approved | |
Oh-My-Posh 19.13.0 | 2296 | Tuesday, March 5, 2024 | Approved | |
Oh-My-Posh 19.11.7 | 1817 | Friday, March 1, 2024 | Approved | |
Oh-My-Posh 19.11.6 | 24 | Wednesday, February 28, 2024 | Approved | |
Oh-My-Posh 19.11.4 | 2901 | Wednesday, February 21, 2024 | Approved | |
Oh-My-Posh 19.11.3 | 695 | Tuesday, February 20, 2024 | Approved | |
Oh-My-Posh 19.11.2 | 875 | Friday, February 16, 2024 | Approved | |
Oh-My-Posh 19.11.1 | 1305 | Thursday, February 15, 2024 | Approved | |
Oh-My-Posh 19.11.0 | 33 | Tuesday, February 13, 2024 | Approved | |
Oh-My-Posh 19.10.0 | 1278 | Tuesday, February 13, 2024 | Approved | |
Oh-My-Posh 19.8.3 | 2100 | Wednesday, February 7, 2024 | Approved | |
Oh-My-Posh 19.8.2 | 2588 | Saturday, January 27, 2024 | Approved | |
Oh-My-Posh 19.8.1 | 570 | Thursday, January 25, 2024 | Approved | |
Oh-My-Posh 19.8.0 | 1371 | Sunday, January 21, 2024 | Approved | |
Oh-My-Posh 19.6.0 | 1582 | Tuesday, January 16, 2024 | Approved | |
Oh-My-Posh 19.5.2 | 887 | Sunday, January 14, 2024 | Approved | |
Oh-My-Posh 19.5.1 | 943 | Thursday, January 11, 2024 | Approved | |
Oh-My-Posh 19.5.0 | 541 | Wednesday, January 10, 2024 | Approved | |
Oh-My-Posh 19.4.0 | 1297 | Saturday, January 6, 2024 | Approved | |
Oh-My-Posh 19.3.1 | 1341 | Tuesday, January 2, 2024 | Approved | |
Oh-My-Posh 19.3.0 | 2147 | Tuesday, December 19, 2023 | Approved | |
Oh-My-Posh 19.2.1 | 2344 | Thursday, December 7, 2023 | Approved | |
Oh-My-Posh 19.2.0 | 1068 | Tuesday, December 5, 2023 | Approved | |
Oh-My-Posh 19.1.1 | 859 | Sunday, December 3, 2023 | Approved | |
Oh-My-Posh 19.1.0 | 143 | Saturday, December 2, 2023 | Approved | |
Oh-My-Posh 18.28.0 | 279 | Saturday, December 2, 2023 | Approved | |
Oh-My-Posh 18.27.1 | 156 | Friday, December 1, 2023 | Approved | |
Oh-My-Posh 18.27.0 | 748 | Wednesday, November 29, 2023 | Approved | |
Oh-My-Posh 18.26.1 | 2356 | Monday, November 20, 2023 | Approved | |
Oh-My-Posh 18.26.0 | 61 | Sunday, November 19, 2023 | Approved | |
Oh-My-Posh 18.25.1 | 1318 | Wednesday, November 15, 2023 | Approved | |
Oh-My-Posh 18.25.0 | 1736 | Friday, November 10, 2023 | Approved | |
Oh-My-Posh 18.24.0 | 221 | Thursday, November 9, 2023 | Approved | |
Oh-My-Posh 18.23.3 | 1168 | Tuesday, November 7, 2023 | Approved | |
Oh-My-Posh 18.23.2 | 713 | Sunday, November 5, 2023 | Approved | |
Oh-My-Posh 18.23.1 | 451 | Saturday, November 4, 2023 | Approved | |
Oh-My-Posh 18.23.0 | 201 | Saturday, November 4, 2023 | Approved | |
Oh-My-Posh 18.22.0 | 1048 | Wednesday, November 1, 2023 | Approved | |
Oh-My-Posh 18.19.0 | 647 | Tuesday, October 31, 2023 | Approved | |
Oh-My-Posh 18.18.1 | 417 | Monday, October 30, 2023 | Approved | |
Oh-My-Posh 18.17.1 | 189 | Monday, October 30, 2023 | Approved | |
Oh-My-Posh 18.17.0 | 552 | Sunday, October 29, 2023 | Approved | |
Oh-My-Posh 18.16.2 | 420 | Saturday, October 28, 2023 | Approved | |
Oh-My-Posh 18.16.1 | 165 | Saturday, October 28, 2023 | Approved | |
Oh-My-Posh 18.15.0 | 2190 | Wednesday, October 18, 2023 | Approved | |
Oh-My-Posh 18.14.0 | 671 | Tuesday, October 17, 2023 | Approved | |
Oh-My-Posh 18.13.0 | 1161 | Saturday, October 14, 2023 | Approved | |
Oh-My-Posh 18.12.0 | 150 | Friday, October 13, 2023 | Approved | |
Oh-My-Posh 18.11.0 | 2456 | Monday, October 2, 2023 | Approved | |
Oh-My-Posh 18.10.3 | 1038 | Friday, September 29, 2023 | Approved | |
Oh-My-Posh 18.10.2 | 809 | Wednesday, September 27, 2023 | Approved | |
Oh-My-Posh 18.10.1 | 1146 | Sunday, September 24, 2023 | Approved | |
Oh-My-Posh 18.10.0 | 210 | Sunday, September 24, 2023 | Approved | |
Oh-My-Posh 18.9.1 | 2067 | Friday, September 15, 2023 | Approved | |
Oh-My-Posh 18.9.0 | 964 | Wednesday, September 13, 2023 | Approved | |
Oh-My-Posh 18.8.1 | 1196 | Sunday, September 10, 2023 | Approved | |
Oh-My-Posh 18.8.0 | 451 | Friday, September 8, 2023 | Approved | |
Oh-My-Posh 18.7.0 | 1149 | Tuesday, September 5, 2023 | Approved | |
Oh-My-Posh 18.6.4 | 158 | Monday, September 4, 2023 | Approved | |
Oh-My-Posh 18.6.3 | 758 | Sunday, September 3, 2023 | Approved | |
Oh-My-Posh 18.6.2 | 201 | Saturday, September 2, 2023 | Approved | |
Oh-My-Posh 18.6.1 | 598 | Friday, September 1, 2023 | Approved | |
Oh-My-Posh 18.6.0 | 583 | Thursday, August 31, 2023 | Approved | |
Oh-My-Posh 18.5.1 | 154 | Wednesday, August 30, 2023 | Approved | |
Oh-My-Posh 18.5.0 | 1096 | Sunday, August 27, 2023 | Approved | |
Oh-My-Posh 18.4.0 | 595 | Friday, August 25, 2023 | Approved | |
Oh-My-Posh 18.3.5 | 1625 | Saturday, August 19, 2023 | Approved | |
Oh-My-Posh 18.3.4 | 680 | Thursday, August 17, 2023 | Approved | |
Oh-My-Posh 18.3.3 | 1854 | Wednesday, August 9, 2023 | Approved | |
Oh-My-Posh 18.3.2 | 564 | Tuesday, August 8, 2023 | Approved | |
Oh-My-Posh 18.3.1 | 607 | Monday, August 7, 2023 | Approved | |
Oh-My-Posh 18.3.0 | 187 | Sunday, August 6, 2023 | Approved | |
Oh-My-Posh 18.2.4 | 251 | Sunday, August 6, 2023 | Approved | |
Oh-My-Posh 18.2.3 | 212 | Saturday, August 5, 2023 | Approved | |
Oh-My-Posh 18.2.2 | 369 | Friday, August 4, 2023 | Approved | |
Oh-My-Posh 18.2.1 | 432 | Friday, August 4, 2023 | Approved | |
Oh-My-Posh 18.2.0 | 1713 | Saturday, July 29, 2023 | Approved | |
Oh-My-Posh 18.1.0 | 639 | Thursday, July 27, 2023 | Approved | |
Oh-My-Posh 18.0.1 | 924 | Tuesday, July 25, 2023 | Approved | |
Oh-My-Posh 18.0.0 | 236 | Monday, July 24, 2023 | Approved | |
Oh-My-Posh 17.12.1 | 518 | Sunday, July 23, 2023 | Approved | |
Oh-My-Posh 17.12.0 | 601 | Saturday, July 22, 2023 | Approved | |
Oh-My-Posh 17.11.3 | 986 | Wednesday, July 19, 2023 | Approved | |
Oh-My-Posh 17.11.2 | 1314 | Friday, July 14, 2023 | Approved | |
Oh-My-Posh 17.9.1 | 142 | Friday, July 14, 2023 | Approved | |
Oh-My-Posh 17.9.0 | 1367 | Monday, July 10, 2023 | Approved | |
Oh-My-Posh 17.7.0 | 478 | Sunday, July 9, 2023 | Approved | |
Oh-My-Posh 17.6.0 | 1529 | Monday, July 3, 2023 | Approved | |
Oh-My-Posh 17.5.3 | 456 | Saturday, July 1, 2023 | Approved | |
Oh-My-Posh 17.5.2 | 1331 | Monday, June 26, 2023 | Approved | |
Oh-My-Posh 17.5.0 | 246 | Monday, June 26, 2023 | Approved | |
Oh-My-Posh 17.4.0 | 1492 | Monday, June 19, 2023 | Approved | |
Oh-My-Posh 17.3.0 | 1213 | Thursday, June 15, 2023 | Approved | |
Oh-My-Posh 17.2.0 | 682 | Wednesday, June 14, 2023 | Approved | |
Oh-My-Posh 17.1.0 | 518 | Tuesday, June 13, 2023 | Approved | |
Oh-My-Posh 17.0.0 | 1171 | Thursday, June 8, 2023 | Approved | |
Oh-My-Posh 16.10.0 | 873 | Tuesday, June 6, 2023 | Approved | |
Oh-My-Posh 16.9.1 | 1514 | Wednesday, May 31, 2023 | Approved | |
Oh-My-Posh 16.9.0 | 1361 | Friday, May 26, 2023 | Approved | |
Oh-My-Posh 16.8.0 | 1447 | Sunday, May 21, 2023 | Approved | |
Oh-My-Posh 16.7.2 | 477 | Saturday, May 20, 2023 | Approved | |
Oh-My-Posh 16.7.1 | 139 | Saturday, May 20, 2023 | Approved | |
Oh-My-Posh 16.7.0 | 499 | Friday, May 19, 2023 | Approved | |
Oh-My-Posh 16.5.0 | 474 | Thursday, May 18, 2023 | Approved | |
Oh-My-Posh 16.4.2 | 412 | Wednesday, May 17, 2023 | Approved | |
Oh-My-Posh 16.4.0 | 1701 | Thursday, May 11, 2023 | Approved | |
Oh-My-Posh 16.3.0 | 254 | Thursday, May 11, 2023 | Approved | |
Oh-My-Posh 16.2.3 | 94 | Wednesday, May 10, 2023 | Approved | |
Oh-My-Posh 16.2.2 | 636 | Tuesday, May 9, 2023 | Approved | |
Oh-My-Posh 16.1.1 | 171 | Tuesday, May 9, 2023 | Approved | |
Oh-My-Posh 16.1.0 | 255 | Tuesday, May 9, 2023 | Approved | |
Oh-My-Posh 16.0.0 | 466 | Monday, May 8, 2023 | Approved | |
Oh-My-Posh 15.5.0 | 683 | Sunday, May 7, 2023 | Approved | |
Oh-My-Posh 15.4.2 | 758 | Thursday, May 4, 2023 | Approved | |
Oh-My-Posh 15.4.1 | 866 | Tuesday, May 2, 2023 | Approved | |
Oh-My-Posh 15.4.0 | 1288 | Friday, April 28, 2023 | Approved | |
Oh-My-Posh 15.3.0 | 879 | Wednesday, April 26, 2023 | Approved | |
Oh-My-Posh 15.2.0 | 638 | Monday, April 24, 2023 | Approved | |
Oh-My-Posh 14.32.2 | 544 | Sunday, April 23, 2023 | Approved | |
Oh-My-Posh 14.32.1 | 273 | Sunday, April 23, 2023 | Approved | |
Oh-My-Posh 14.32.0 | 166 | Saturday, April 22, 2023 | Approved | |
Oh-My-Posh 14.31.7 | 170 | Saturday, April 22, 2023 | Approved | |
Oh-My-Posh 14.31.5 | 156 | Saturday, April 22, 2023 | Approved | |
Oh-My-Posh 14.31.2 | 719 | Thursday, April 20, 2023 | Approved | |
Oh-My-Posh 14.30.0 | 1402 | Sunday, April 16, 2023 | Approved | |
Oh-My-Posh 14.29.3 | 381 | Saturday, April 15, 2023 | Approved | |
Oh-My-Posh 14.29.2 | 194 | Friday, April 14, 2023 | Approved | |
Oh-My-Posh 14.29.1 | 1573 | Monday, April 10, 2023 | Approved | |
Oh-My-Posh 14.29.0 | 385 | Saturday, April 8, 2023 | Approved | |
Oh-My-Posh 14.28.0 | 314 | Saturday, April 8, 2023 | Approved | |
Oh-My-Posh 14.27.0 | 196 | Friday, April 7, 2023 | Approved | |
Oh-My-Posh 14.26.0 | 585 | Thursday, April 6, 2023 | Approved | |
Oh-My-Posh 14.25.1 | 769 | Tuesday, April 4, 2023 | Approved | |
Oh-My-Posh 14.25.0 | 818 | Monday, April 3, 2023 | Approved | |
Oh-My-Posh 14.24.0 | 638 | Saturday, April 1, 2023 | Approved | |
Oh-My-Posh 14.23.1 | 510 | Friday, March 31, 2023 | Approved | |
Oh-My-Posh 14.23.0 | 213 | Thursday, March 30, 2023 | Approved | |
Oh-My-Posh 14.22.0 | 393 | Thursday, March 30, 2023 | Approved | |
Oh-My-Posh 14.21.0 | 551 | Wednesday, March 29, 2023 | Approved | |
Oh-My-Posh 14.19.5 | 413 | Tuesday, March 28, 2023 | Approved | |
Oh-My-Posh 14.19.4 | 387 | Monday, March 27, 2023 | Approved | |
Oh-My-Posh 14.19.3 | 599 | Sunday, March 26, 2023 | Approved | |
Oh-My-Posh 14.19.1 | 520 | Saturday, March 25, 2023 | Approved | |
Oh-My-Posh 14.17.0 | 533 | Friday, March 24, 2023 | Approved | |
Oh-My-Posh 14.16.0 | 426 | Thursday, March 23, 2023 | Approved | |
Oh-My-Posh 14.15.0 | 641 | Wednesday, March 22, 2023 | Approved | |
Oh-My-Posh 14.14.4 | 222 | Tuesday, March 21, 2023 | Approved | |
Oh-My-Posh 14.14.3 | 1198 | Friday, March 17, 2023 | Approved | |
Oh-My-Posh 14.14.2 | 727 | Thursday, March 16, 2023 | Approved | |
Oh-My-Posh 14.14.1 | 999 | Tuesday, March 14, 2023 | Approved | |
Oh-My-Posh 14.13.1 | 406 | Monday, March 13, 2023 | Approved | |
Oh-My-Posh 14.12.1 | 362 | Sunday, March 12, 2023 | Approved | |
Oh-My-Posh 14.12.0 | 1834 | Sunday, March 5, 2023 | Approved | |
Oh-My-Posh 14.10.1 | 468 | Saturday, March 4, 2023 | Approved | |
Oh-My-Posh 14.10.0 | 167 | Saturday, March 4, 2023 | Approved | |
Oh-My-Posh 14.9.2 | 1152 | Wednesday, March 1, 2023 | Approved | |
Oh-My-Posh 14.9.1 | 911 | Sunday, February 26, 2023 | Approved | |
Oh-My-Posh 14.8.0 | 1549 | Tuesday, February 21, 2023 | Approved | |
Oh-My-Posh 14.7.1 | 645 | Sunday, February 19, 2023 | Approved | |
Oh-My-Posh 14.7.0 | 406 | Saturday, February 18, 2023 | Approved | |
Oh-My-Posh 14.5.0 | 457 | Friday, February 17, 2023 | Approved | |
Oh-My-Posh 14.3.0 | 521 | Thursday, February 16, 2023 | Approved | |
Oh-My-Posh 14.2.8 | 869 | Tuesday, February 14, 2023 | Approved | |
Oh-My-Posh 14.2.7 | 662 | Monday, February 13, 2023 | Approved | |
Oh-My-Posh 14.2.6 | 876 | Friday, February 10, 2023 | Approved | |
Oh-My-Posh 14.2.5 | 692 | Thursday, February 9, 2023 | Approved | |
Oh-My-Posh 14.2.4 | 221 | Thursday, February 9, 2023 | Approved | |
Oh-My-Posh 14.2.3 | 240 | Wednesday, February 8, 2023 | Approved | |
Oh-My-Posh 14.2.2 | 400 | Wednesday, February 8, 2023 | Approved | |
Oh-My-Posh 14.2.1 | 907 | Monday, February 6, 2023 | Approved | |
Oh-My-Posh 14.2.0 | 186 | Sunday, February 5, 2023 | Approved | |
Oh-My-Posh 14.1.2 | 364 | Saturday, February 4, 2023 | Approved | |
Oh-My-Posh 14.1.1 | 417 | Friday, February 3, 2023 | Approved | |
Oh-My-Posh 14.1.0 | 447 | Friday, February 3, 2023 | Approved | |
Oh-My-Posh 14.0.3 | 666 | Wednesday, February 1, 2023 | Approved | |
Oh-My-Posh 14.0.2 | 305 | Wednesday, February 1, 2023 | Approved | |
Oh-My-Posh 14.0.1 | 594 | Tuesday, January 31, 2023 | Approved | |
Oh-My-Posh 14.0.0 | 832 | Sunday, January 29, 2023 | Approved | |
Oh-My-Posh 13.9.0 | 626 | Friday, January 27, 2023 | Approved | |
Oh-My-Posh 13.8.0 | 391 | Friday, January 27, 2023 | Approved | |
Oh-My-Posh 13.7.0 | 688 | Wednesday, January 25, 2023 | Approved | |
Oh-My-Posh 13.6.0 | 989 | Monday, January 23, 2023 | Approved | |
Oh-My-Posh 13.5.0 | 584 | Saturday, January 21, 2023 | Approved | |
Oh-My-Posh 13.4.0 | 226 | Saturday, January 21, 2023 | Approved | |
Oh-My-Posh 13.3.1 | 474 | Friday, January 20, 2023 | Approved | |
Oh-My-Posh 13.3.0 | 903 | Wednesday, January 18, 2023 | Approved | |
Oh-My-Posh 13.2.0 | 219 | Tuesday, January 17, 2023 | Approved | |
Oh-My-Posh 13.1.2 | 1064 | Saturday, January 14, 2023 | Approved | |
Oh-My-Posh 13.1.1 | 397 | Friday, January 13, 2023 | Approved | |
Oh-My-Posh 13.1.0 | 489 | Thursday, January 12, 2023 | Approved | |
Oh-My-Posh 12.40.0 | 315 | Wednesday, January 11, 2023 | Approved | |
Oh-My-Posh 12.38.1 | 629 | Wednesday, January 11, 2023 | Approved | |
Oh-My-Posh 12.37.0 | 639 | Monday, January 9, 2023 | Approved | |
Oh-My-Posh 12.36.0 | 596 | Sunday, January 8, 2023 | Approved | |
Oh-My-Posh 12.35.2 | 589 | Friday, January 6, 2023 | Approved | |
Oh-My-Posh 12.35.0 | 214 | Friday, January 6, 2023 | Approved | |
Oh-My-Posh 12.34.6 | 182 | Friday, January 6, 2023 | Approved | |
Oh-My-Posh 12.34.5 | 1058 | Tuesday, January 3, 2023 | Approved | |
Oh-My-Posh 12.34.3 | 705 | Saturday, December 31, 2022 | Approved | |
Oh-My-Posh 12.34.2 | 324 | Friday, December 30, 2022 | Approved | |
Oh-My-Posh 12.34.1 | 294 | Friday, December 30, 2022 | Approved | |
Oh-My-Posh 12.33.1 | 146 | Thursday, December 29, 2022 | Approved | |
Oh-My-Posh 12.33.0 | 278 | Thursday, December 29, 2022 | Approved | |
Oh-My-Posh 12.31.1 | 377 | Wednesday, December 28, 2022 | Approved | |
Oh-My-Posh 12.31.0 | 316 | Tuesday, December 27, 2022 | Approved | |
Oh-My-Posh 12.30.1 | 537 | Monday, December 26, 2022 | Approved | |
Oh-My-Posh 12.29.0 | 305 | Sunday, December 25, 2022 | Approved | |
Oh-My-Posh 12.28.3 | 357 | Friday, December 23, 2022 | Approved | |
Oh-My-Posh 12.28.2 | 622 | Thursday, December 22, 2022 | Approved | |
Oh-My-Posh 12.28.1 | 494 | Wednesday, December 21, 2022 | Approved | |
Oh-My-Posh 12.28.0 | 794 | Sunday, December 18, 2022 | Approved | |
Oh-My-Posh 12.26.8 | 369 | Sunday, December 18, 2022 | Approved | |
Oh-My-Posh 12.26.6 | 203 | Saturday, December 17, 2022 | Approved | |
Oh-My-Posh 12.26.5 | 246 | Friday, December 16, 2022 | Approved | |
Oh-My-Posh 12.26.2 | 1677 | Saturday, December 10, 2022 | Approved | |
Oh-My-Posh 12.26.1 | 776 | Thursday, December 8, 2022 | Approved | |
Oh-My-Posh 12.26.0 | 495 | Wednesday, December 7, 2022 | Approved | |
Oh-My-Posh 12.25.3 | 238 | Wednesday, December 7, 2022 | Approved | |
Oh-My-Posh 12.25.2 | 112 | Wednesday, December 7, 2022 | Approved | |
Oh-My-Posh 12.25.0 | 991 | Sunday, December 4, 2022 | Approved | |
Oh-My-Posh 12.23.0 | 1027 | Wednesday, November 30, 2022 | Approved | |
Oh-My-Posh 12.22.0 | 765 | Tuesday, November 29, 2022 | Approved | |
Oh-My-Posh 12.21.0 | 564 | Monday, November 28, 2022 | Approved | |
Oh-My-Posh 12.20.0 | 437 | Saturday, November 26, 2022 | Approved | |
Oh-My-Posh 12.19.0 | 219 | Saturday, November 26, 2022 | Approved | |
Oh-My-Posh 12.18.3 | 542 | Thursday, November 24, 2022 | Approved | |
Oh-My-Posh 12.18.2 | 492 | Wednesday, November 23, 2022 | Approved | |
Oh-My-Posh 12.18.1 | 148 | Wednesday, November 23, 2022 | Approved | |
Oh-My-Posh 12.17.2 | 614 | Tuesday, November 22, 2022 | Approved | |
Oh-My-Posh 12.17.0 | 711 | Sunday, November 20, 2022 | Approved | |
Oh-My-Posh 12.16.1 | 234 | Sunday, November 20, 2022 | Approved | |
Oh-My-Posh 12.16.0 | 467 | Friday, November 18, 2022 | Approved | |
Oh-My-Posh 12.15.0 | 52 | Friday, November 18, 2022 | Approved | |
Oh-My-Posh 12.14.1 | 172 | Thursday, November 17, 2022 | Approved | |
Oh-My-Posh 12.13.3 | 1313 | Monday, November 14, 2022 | Approved | |
Oh-My-Posh 12.13.2 | 789 | Saturday, November 12, 2022 | Approved | |
Oh-My-Posh 12.13.1 | 974 | Wednesday, November 9, 2022 | Approved | |
Oh-My-Posh 12.13.0 | 1227 | Saturday, November 5, 2022 | Approved | |
Oh-My-Posh 12.12.1 | 361 | Saturday, November 5, 2022 | Approved | |
Oh-My-Posh 12.11.0 | 171 | Friday, November 4, 2022 | Approved | |
Oh-My-Posh 12.10.0 | 1607 | Saturday, October 29, 2022 | Approved | |
Oh-My-Posh 12.9.1 | 529 | Friday, October 28, 2022 | Approved | |
Oh-My-Posh 12.9.0 | 385 | Thursday, October 27, 2022 | Approved | |
Oh-My-Posh 12.8.0 | 412 | Thursday, October 27, 2022 | Approved | |
Oh-My-Posh 12.7.1 | 607 | Tuesday, October 25, 2022 | Approved | |
Oh-My-Posh 12.6.7 | 891 | Saturday, October 22, 2022 | Approved | |
Oh-My-Posh 12.6.6 | 415 | Friday, October 21, 2022 | Approved | |
Oh-My-Posh 12.6.5 | 201 | Thursday, October 20, 2022 | Approved | |
Oh-My-Posh 12.6.3 | 356 | Thursday, October 20, 2022 | Approved | |
Oh-My-Posh 12.6.1 | 126 | Wednesday, October 19, 2022 | Approved | |
Oh-My-Posh 12.5.0 | 578 | Wednesday, October 19, 2022 | Approved | |
Oh-My-Posh 12.4.0 | 133 | Tuesday, October 18, 2022 | Approved | |
Oh-My-Posh 12.3.1 | 1072 | Sunday, October 16, 2022 | Approved | |
Oh-My-Posh 12.2.2 | 840 | Friday, October 14, 2022 | Approved | |
Oh-My-Posh 12.2.1 | 351 | Friday, October 14, 2022 | Approved | |
Oh-My-Posh 12.1.0 | 1384 | Monday, October 10, 2022 | Approved | |
Oh-My-Posh 12.0.1 | 1147 | Thursday, October 6, 2022 | Approved | |
Oh-My-Posh 12.0.0 | 484 | Thursday, October 6, 2022 | Approved | |
Oh-My-Posh 11.3.0 | 900 | Monday, October 3, 2022 | Approved | |
Oh-My-Posh 11.2.0 | 260 | Monday, October 3, 2022 | Approved | |
Oh-My-Posh 11.1.1 | 1371 | Tuesday, September 27, 2022 | Approved | |
Oh-My-Posh 11.1.0 | 237 | Tuesday, September 27, 2022 | Approved | |
Oh-My-Posh 10.3.0 | 708 | Monday, September 26, 2022 | Approved | |
Oh-My-Posh 10.1.0 | 587 | Saturday, September 24, 2022 | Approved | |
Oh-My-Posh 9.5.0 | 1078 | Wednesday, September 21, 2022 | Approved | |
Oh-My-Posh 9.4.1 | 624 | Monday, September 19, 2022 | Approved | |
Oh-My-Posh 9.4.0 | 677 | Sunday, September 18, 2022 | Approved | |
Oh-My-Posh 9.3.3 | 245 | Saturday, September 17, 2022 | Approved | |
Oh-My-Posh 9.3.1 | 537 | Friday, September 16, 2022 | Approved | |
Oh-My-Posh 9.3.0 | 379 | Thursday, September 15, 2022 | Approved | |
Oh-My-Posh 9.1.0 | 1055 | Tuesday, September 13, 2022 | Approved | |
Oh-My-Posh 9.0.0 | 1360 | Thursday, September 8, 2022 | Approved | |
Oh-My-Posh 8.37.1 | 1316 | Friday, September 2, 2022 | Approved | |
Oh-My-Posh 8.36.7 | 144 | Friday, September 2, 2022 | Approved | |
Oh-My-Posh 8.36.6 | 856 | Wednesday, August 31, 2022 | Approved | |
Oh-My-Posh 8.36.5 | 286 | Wednesday, August 31, 2022 | Approved | |
Oh-My-Posh 8.36.4 | 662 | Monday, August 29, 2022 | Approved | |
Oh-My-Posh 8.36.0 | 494 | Sunday, August 28, 2022 | Approved | |
Oh-My-Posh 8.35.0 | 322 | Saturday, August 27, 2022 | Approved | |
Oh-My-Posh 8.34.0 | 300 | Friday, August 26, 2022 | Approved | |
Oh-My-Posh 8.33.2 | 596 | Thursday, August 25, 2022 | Approved | |
Oh-My-Posh 8.33.1 | 828 | Tuesday, August 23, 2022 | Approved | |
Oh-My-Posh 8.33.0 | 407 | Tuesday, August 23, 2022 | Approved | |
Oh-My-Posh 8.32.4 | 643 | Sunday, August 21, 2022 | Approved | |
Oh-My-Posh 8.32.2 | 820 | Thursday, August 18, 2022 | Approved | |
Oh-My-Posh 8.31.1 | 536 | Wednesday, August 17, 2022 | Approved | |
Oh-My-Posh 8.31.0 | 397 | Wednesday, August 17, 2022 | Approved | |
Oh-My-Posh 8.30.0 | 1086 | Saturday, August 13, 2022 | Approved | |
Oh-My-Posh 8.29.5 | 946 | Wednesday, August 10, 2022 | Approved | |
Oh-My-Posh 8.29.3 | 270 | Wednesday, August 10, 2022 | Approved | |
Oh-My-Posh 8.29.2 | 358 | Tuesday, August 9, 2022 | Approved | |
Oh-My-Posh 8.29.1 | 241 | Tuesday, August 9, 2022 | Approved | |
Oh-My-Posh 8.29.0 | 588 | Monday, August 8, 2022 | Approved | |
Oh-My-Posh 8.23.0 | 1919 | Thursday, July 28, 2022 | Approved | |
Oh-My-Posh 8.22.7 | 483 | Wednesday, July 27, 2022 | Approved | |
Oh-My-Posh 8.22.6 | 608 | Tuesday, July 26, 2022 | Approved | |
Oh-My-Posh 8.22.3 | 383 | Monday, July 25, 2022 | Approved | |
Oh-My-Posh 8.22.2 | 504 | Sunday, July 24, 2022 | Approved | |
Oh-My-Posh 8.22.1 | 494 | Saturday, July 23, 2022 | Approved | |
Oh-My-Posh 8.22.0 | 522 | Thursday, July 21, 2022 | Approved | |
Oh-My-Posh 8.20.1 | 318 | Wednesday, July 20, 2022 | Approved | |
Oh-My-Posh 8.20.0 | 99 | Wednesday, July 20, 2022 | Approved | |
Oh-My-Posh 8.18.0 | 1246 | Friday, July 15, 2022 | Approved | |
Oh-My-Posh 8.17.0 | 781 | Wednesday, July 13, 2022 | Approved | |
Oh-My-Posh 8.16.0 | 401 | Wednesday, July 13, 2022 | Approved | |
Oh-My-Posh 8.15.2 | 543 | Monday, July 11, 2022 | Approved | |
Oh-My-Posh 8.15.1 | 535 | Sunday, July 10, 2022 | Approved | |
Oh-My-Posh 8.15.0 | 443 | Saturday, July 9, 2022 | Approved | |
Oh-My-Posh 8.13.1 | 612 | Thursday, July 7, 2022 | Approved | |
Oh-My-Posh 8.12.0 | 604 | Wednesday, July 6, 2022 | Approved | |
Oh-My-Posh 8.11.2 | 183 | Tuesday, July 5, 2022 | Approved | |
Oh-My-Posh 8.11.1 | 649 | Monday, July 4, 2022 | Approved | |
Oh-My-Posh 8.11.0 | 157 | Sunday, July 3, 2022 | Approved | |
Oh-My-Posh 8.10.2 | 389 | Saturday, July 2, 2022 | Approved | |
Oh-My-Posh 8.10.0 | 137 | Saturday, July 2, 2022 | Approved | |
Oh-My-Posh 8.9.1 | 194 | Friday, July 1, 2022 | Approved | |
Oh-My-Posh 8.8.1 | 278 | Friday, July 1, 2022 | Approved | |
Oh-My-Posh 8.7.1 | 747 | Wednesday, June 29, 2022 | Approved | |
Oh-My-Posh 8.7.0 | 552 | Tuesday, June 28, 2022 | Approved | |
Oh-My-Posh 8.6.2 | 388 | Monday, June 27, 2022 | Approved | |
Oh-My-Posh 8.6.0 | 1100 | Thursday, June 23, 2022 | Approved | |
Oh-My-Posh 8.5.2 | 1246 | Friday, June 17, 2022 | Approved | |
Oh-My-Posh 8.5.0 | 1262 | Sunday, June 12, 2022 | Approved | |
Oh-My-Posh 8.4.0 | 513 | Friday, June 10, 2022 | Approved | |
Oh-My-Posh 8.3.2 | 592 | Thursday, June 9, 2022 | Approved | |
Oh-My-Posh 8.3.1 | 660 | Tuesday, June 7, 2022 | Approved | |
Oh-My-Posh 8.1.0 | 767 | Sunday, June 5, 2022 | Approved | |
Oh-My-Posh 8.0.1 | 386 | Saturday, June 4, 2022 | Approved | |
Oh-My-Posh 8.0.0 | 153 | Saturday, June 4, 2022 | Approved | |
Oh-My-Posh 7.95.0 | 177 | Friday, June 3, 2022 | Approved | |
Oh-My-Posh 7.94.1 | 1009 | Tuesday, May 31, 2022 | Approved | |
Oh-My-Posh 7.94.0 | 446 | Monday, May 30, 2022 | Approved | |
Oh-My-Posh 7.93.1 | 440 | Sunday, May 29, 2022 | Approved | |
Oh-My-Posh 7.93.0 | 358 | Saturday, May 28, 2022 | Approved | |
Oh-My-Posh 7.91.3 | 505 | Thursday, May 26, 2022 | Approved | |
Oh-My-Posh 7.91.2 | 363 | Wednesday, May 25, 2022 | Approved | |
Oh-My-Posh 7.91.0 | 600 | Tuesday, May 24, 2022 | Approved | |
Oh-My-Posh 7.90.2 | 630 | Monday, May 23, 2022 | Approved | |
Oh-My-Posh 7.90.1 | 241 | Monday, May 23, 2022 | Approved | |
Oh-My-Posh 7.88.1 | 173 | Sunday, May 22, 2022 | Approved | |
Oh-My-Posh 7.87.0 | 443 | Saturday, May 21, 2022 | Approved | |
Oh-My-Posh 7.86.0 | 212 | Friday, May 20, 2022 | Approved | |
Oh-My-Posh 7.85.4 | 260 | Friday, May 20, 2022 | Approved | |
Oh-My-Posh 7.85.3 | 226 | Friday, May 20, 2022 | Approved | |
Oh-My-Posh 7.85.2 | 799 | Tuesday, May 17, 2022 | Approved | |
Oh-My-Posh 7.85.1 | 501 | Tuesday, May 17, 2022 | Approved | |
Oh-My-Posh 7.85.0 | 383 | Monday, May 16, 2022 | Approved | |
Oh-My-Posh 7.82.1 | 672 | Friday, May 13, 2022 | Approved | |
Oh-My-Posh 7.82.0 | 426 | Friday, May 13, 2022 | Approved | |
Oh-My-Posh 7.81.4 | 296 | Thursday, May 12, 2022 | Approved | |
Oh-My-Posh 7.81.3 | 238 | Thursday, May 12, 2022 | Approved | |
Oh-My-Posh 7.81.2 | 228 | Thursday, May 12, 2022 | Approved | |
Oh-My-Posh 7.81.1 | 715 | Tuesday, May 10, 2022 | Approved | |
Oh-My-Posh 7.80.1 | 679 | Monday, May 9, 2022 | Approved | |
Oh-My-Posh 7.79.6 | 281 | Sunday, May 8, 2022 | Approved | |
Oh-My-Posh 7.79.3 | 241 | Saturday, May 7, 2022 | Approved | |
Oh-My-Posh 7.79.1 | 270 | Saturday, May 7, 2022 | Approved | |
Oh-My-Posh 7.79.0 | 174 | Friday, May 6, 2022 | Approved | |
Oh-My-Posh 7.78.0 | 260 | Friday, May 6, 2022 | Approved | |
Oh-My-Posh 7.77.0 | 883 | Tuesday, May 3, 2022 | Approved | |
Oh-My-Posh 7.76.0 | 831 | Sunday, May 1, 2022 | Approved | |
Oh-My-Posh 7.75.0 | 419 | Saturday, April 30, 2022 | Approved | |
Oh-My-Posh 7.74.4 | 183 | Friday, April 29, 2022 | Approved | |
Oh-My-Posh 7.74.3 | 405 | Friday, April 29, 2022 | Approved | |
Oh-My-Posh 7.74.1 | 88 | Thursday, April 28, 2022 | Approved | |
Oh-My-Posh 7.74.0 | 265 | Thursday, April 28, 2022 | Approved | |
Oh-My-Posh 7.72.5 | 574 | Wednesday, April 27, 2022 | Approved | |
Oh-My-Posh 7.72.4 | 265 | Wednesday, April 27, 2022 | Approved | |
Oh-My-Posh 7.72.2 | 191 | Tuesday, April 26, 2022 | Approved | |
Oh-My-Posh 7.72.1 | 286 | Tuesday, April 26, 2022 | Approved | |
Oh-My-Posh 7.71.2 | 458 | Monday, April 25, 2022 | Approved | |
Oh-My-Posh 7.71.0 | 466 | Sunday, April 24, 2022 | Approved | |
Oh-My-Posh 7.70.1 | 257 | Sunday, April 24, 2022 | Approved | |
Oh-My-Posh 7.70.0 | 171 | Saturday, April 23, 2022 | Approved | |
Oh-My-Posh 7.69.0 | 436 | Friday, April 22, 2022 | Approved | |
Oh-My-Posh 7.68.0 | 218 | Friday, April 22, 2022 | Approved | |
Oh-My-Posh 7.67.0 | 350 | Thursday, April 21, 2022 | Approved | |
Oh-My-Posh 7.66.0 | 654 | Wednesday, April 20, 2022 | Approved | |
Oh-My-Posh 7.64.2 | 1059 | Monday, April 18, 2022 | Approved | |
Oh-My-Posh 7.64.1 | 385 | Sunday, April 17, 2022 | Approved | |
Oh-My-Posh 7.63.0 | 187 | Saturday, April 16, 2022 | Approved | |
Oh-My-Posh 7.62.3 | 216 | Saturday, April 16, 2022 | Approved | |
Oh-My-Posh 7.62.1 | 514 | Friday, April 15, 2022 | Approved | |
Oh-My-Posh 7.62.0 | 454 | Thursday, April 14, 2022 | Approved | |
Oh-My-Posh 7.61.0 | 1029 | Tuesday, April 12, 2022 | Approved | |
Oh-My-Posh 7.60.0 | 609 | Monday, April 11, 2022 | Approved | |
Oh-My-Posh 7.59.6 | 1164 | Thursday, April 7, 2022 | Approved | |
Oh-My-Posh 7.59.4 | 397 | Wednesday, April 6, 2022 | Approved | |
Oh-My-Posh 7.59.2 | 295 | Wednesday, April 6, 2022 | Approved | |
Oh-My-Posh 7.59.0 | 293 | Tuesday, April 5, 2022 | Approved | |
Oh-My-Posh 7.58.2 | 106 | Tuesday, April 5, 2022 | Approved | |
Oh-My-Posh 7.57.3 | 687 | Monday, April 4, 2022 | Approved | |
Oh-My-Posh 7.57.2 | 413 | Monday, April 4, 2022 | Approved | |
Oh-My-Posh 7.57.1 | 69 | Sunday, April 3, 2022 | Approved | |
Oh-My-Posh 7.57.0 | 416 | Friday, April 1, 2022 | Approved | |
Oh-My-Posh 7.56.1 | 142 | Friday, April 1, 2022 | Approved | |
Oh-My-Posh 7.55.2 | 893 | Thursday, March 31, 2022 | Approved | |
Oh-My-Posh 7.55.1 | 272 | Thursday, March 31, 2022 | Approved | |
Oh-My-Posh 7.54.0 | 537 | Wednesday, March 30, 2022 | Approved | |
Oh-My-Posh 7.52.1 | 757 | Monday, March 28, 2022 | Approved | |
Oh-My-Posh 7.52.0 | 388 | Sunday, March 27, 2022 | Approved | |
Oh-My-Posh 7.50.0 | 195 | Sunday, March 27, 2022 | Approved | |
Oh-My-Posh 7.49.0 | 230 | Saturday, March 26, 2022 | Approved | |
Oh-My-Posh 7.47.0 | 980 | Thursday, March 24, 2022 | Approved | |
Oh-My-Posh 7.31.1 | 3610 | Thursday, March 3, 2022 | Approved | |
Oh-My-Posh 7.30.2 | 329 | Wednesday, March 2, 2022 | Approved | |
Oh-My-Posh 7.30.1 | 287 | Wednesday, March 2, 2022 | Approved | |
Oh-My-Posh 7.30.0 | 315 | Tuesday, March 1, 2022 | Approved | |
Oh-My-Posh 7.29.0 | 284 | Tuesday, March 1, 2022 | Approved | |
Oh-My-Posh 7.28.1 | 214 | Tuesday, March 1, 2022 | Approved | |
Oh-My-Posh 7.28.0 | 206 | Monday, February 28, 2022 | Approved | |
Oh-My-Posh 7.27.0 | 445 | Monday, February 28, 2022 | Approved | |
Oh-My-Posh 7.26.0 | 286 | Sunday, February 27, 2022 | Approved | |
Oh-My-Posh 7.25.1 | 155 | Sunday, February 27, 2022 | Approved | |
Oh-My-Posh 7.25.0 | 167 | Saturday, February 26, 2022 | Approved | |
Oh-My-Posh 7.24.0 | 225 | Saturday, February 26, 2022 | Approved | |
Oh-My-Posh 7.23.0 | 841 | Wednesday, February 23, 2022 | Approved | |
Oh-My-Posh 7.22.0 | 769 | Monday, February 21, 2022 | Approved | |
Oh-My-Posh 7.21.1 | 517 | Sunday, February 20, 2022 | Approved | |
Oh-My-Posh 7.20.0 | 260 | Sunday, February 20, 2022 | Approved | |
Oh-My-Posh 7.19.2 | 200 | Saturday, February 19, 2022 | Approved | |
Oh-My-Posh 7.19.1 | 188 | Saturday, February 19, 2022 | Approved | |
Oh-My-Posh 7.19.0 | 584 | Thursday, February 17, 2022 | Approved | |
Oh-My-Posh 7.18.0 | 1020 | Tuesday, February 15, 2022 | Approved | |
Oh-My-Posh 7.17.2 | 554 | Monday, February 14, 2022 | Approved | |
Oh-My-Posh 7.17.0 | 376 | Sunday, February 13, 2022 | Approved | |
Oh-My-Posh 7.16.3 | 299 | Saturday, February 12, 2022 | Approved | |
Oh-My-Posh 7.16.2 | 178 | Friday, February 11, 2022 | Approved | |
Oh-My-Posh 7.16.1 | 794 | Thursday, February 10, 2022 | Approved | |
Oh-My-Posh 7.14.1 | 556 | Wednesday, February 9, 2022 | Approved | |
Oh-My-Posh 7.13.0 | 515 | Tuesday, February 8, 2022 | Approved | |
Oh-My-Posh 7.11.0 | 659 | Sunday, February 6, 2022 | Approved | |
Oh-My-Posh 7.10.1 | 227 | Sunday, February 6, 2022 | Approved | |
Oh-My-Posh 7.9.1 | 325 | Saturday, February 5, 2022 | Approved | |
Oh-My-Posh 7.9.0 | 332 | Saturday, February 5, 2022 | Approved | |
Oh-My-Posh 7.8.3 | 8470 | Friday, February 4, 2022 | Approved | |
Oh-My-Posh 7.8.0 | 521 | Thursday, February 3, 2022 | Approved | |
Oh-My-Posh 7.5.1 | 2404 | Saturday, January 22, 2022 | Approved | |
Oh-My-Posh 6.42.0 | 3503 | Wednesday, December 29, 2021 | Approved | |
Oh-My-Posh 6.41.1 | 605 | Monday, December 27, 2021 | Approved | |
Oh-My-Posh 6.41.0 | 310 | Monday, December 27, 2021 | Approved | |
Oh-My-Posh 6.39.1 | 457 | Friday, December 24, 2021 | Approved | |
Oh-My-Posh 6.39.0 | 369 | Thursday, December 23, 2021 | Approved | |
Oh-My-Posh 6.38.2 | 317 | Thursday, December 23, 2021 | Approved | |
Oh-My-Posh 6.38.1 | 399 | Wednesday, December 22, 2021 | Approved | |
Oh-My-Posh 6.38.0 | 444 | Tuesday, December 21, 2021 | Approved | |
Oh-My-Posh 6.37.1 | 628 | Sunday, December 19, 2021 | Approved | |
Oh-My-Posh 6.37.0 | 229 | Saturday, December 18, 2021 | Approved | |
Oh-My-Posh 6.36.2 | 172 | Friday, December 17, 2021 | Approved | |
Oh-My-Posh 6.36.1 | 182 | Friday, December 17, 2021 | Approved | |
Oh-My-Posh 6.34.1 | 684 | Thursday, December 16, 2021 | Approved | |
Oh-My-Posh 6.34.0 | 282 | Wednesday, December 15, 2021 | Approved | |
Oh-My-Posh 6.33.0 | 383 | Tuesday, December 14, 2021 | Approved | |
Oh-My-Posh 6.32.5 | 341 | Tuesday, December 14, 2021 | Approved | |
Oh-My-Posh 6.32.4 | 195 | Monday, December 13, 2021 | Approved | |
Oh-My-Posh 6.31.0 | 603 | Sunday, December 12, 2021 | Approved | |
Oh-My-Posh 6.29.2 | 199 | Saturday, December 11, 2021 | Approved | |
Oh-My-Posh 6.29.1 | 645 | Thursday, December 9, 2021 | Approved | |
Oh-My-Posh 6.28.2 | 313 | Thursday, December 9, 2021 | Approved | |
Oh-My-Posh 6.27.1 | 839 | Monday, December 6, 2021 | Approved | |
Oh-My-Posh 6.26.0 | 326 | Saturday, December 4, 2021 | Approved | |
Oh-My-Posh 6.25.0 | 237 | Saturday, December 4, 2021 | Approved | |
Oh-My-Posh 6.23.2 | 139 | Friday, December 3, 2021 | Approved | |
Oh-My-Posh 6.23.0 | 125 | Friday, December 3, 2021 | Approved | |
Oh-My-Posh 6.22.2 | 443 | Thursday, December 2, 2021 | Approved | |
Oh-My-Posh 6.22.1 | 126 | Thursday, December 2, 2021 | Approved | |
Oh-My-Posh 6.19.2 | 267 | Tuesday, November 30, 2021 | Approved | |
Oh-My-Posh 6.19.1 | 105 | Tuesday, November 30, 2021 | Approved | |
Oh-My-Posh 6.19.0 | 125 | Monday, November 29, 2021 | Approved | |
Oh-My-Posh 6.18.1 | 412 | Monday, November 29, 2021 | Approved | |
Oh-My-Posh 6.18.0 | 74 | Sunday, November 28, 2021 | Approved | |
Oh-My-Posh 6.17.0 | 840 | Saturday, November 27, 2021 | Approved | |
Oh-My-Posh 6.15.2 | 397 | Thursday, November 25, 2021 | Approved | |
Oh-My-Posh 6.14.1 | 228 | Thursday, November 25, 2021 | Approved | |
Oh-My-Posh 6.14.0 | 264 | Wednesday, November 24, 2021 | Approved | |
Oh-My-Posh 6.11.2 | 389 | Tuesday, November 23, 2021 | Approved | |
Oh-My-Posh 6.11.1 | 354 | Tuesday, November 23, 2021 | Approved | |
Oh-My-Posh 6.11.0 | 188 | Monday, November 22, 2021 | Approved | |
Oh-My-Posh 6.8.0 | 531 | Saturday, November 20, 2021 | Approved | |
Oh-My-Posh 6.7.0 | 294 | Friday, November 19, 2021 | Approved | |
Oh-My-Posh 6.6.1 | 203 | Friday, November 19, 2021 | Approved | |
Oh-My-Posh 6.6.0 | 138 | Friday, November 19, 2021 | Approved | |
Oh-My-Posh 6.4.3 | 2194 | Tuesday, November 16, 2021 | Approved | |
Oh-My-Posh 6.4.2 | 602 | Monday, November 15, 2021 | Approved | |
Oh-My-Posh 6.3.1 | 1380 | Sunday, November 14, 2021 | Approved | |
Oh-My-Posh 6.2.5 | 1530 | Friday, November 12, 2021 | Approved | |
Oh-My-Posh 6.2.3 | 945 | Thursday, November 11, 2021 | Approved | |
Oh-My-Posh 6.2.2 | 431 | Thursday, November 11, 2021 | Approved | |
Oh-My-Posh 6.2.0 | 990 | Wednesday, November 10, 2021 | Approved | |
Oh-My-Posh 6.1.0 | 1770 | Monday, November 8, 2021 | Approved | |
Oh-My-Posh 6.0.0 | 1059 | Saturday, November 6, 2021 | Approved | |
Oh-My-Posh 5.19.1 | 577 | Saturday, November 6, 2021 | Approved | |
Oh-My-Posh 5.19.0 | 406 | Friday, November 5, 2021 | Approved | |
Oh-My-Posh 5.18.0 | 1241 | Thursday, November 4, 2021 | Approved | |
Oh-My-Posh 5.17.0 | 646 | Wednesday, November 3, 2021 | Approved | |
Oh-My-Posh 5.16.6 | 516 | Tuesday, November 2, 2021 | Approved | |
Oh-My-Posh 3.180.3 | 31310 | Tuesday, September 14, 2021 | Approved | |
Oh-My-Posh 3.180.2 | 326 | Tuesday, September 14, 2021 | Approved | |
Oh-My-Posh 3.180.1 | 2512 | Friday, September 10, 2021 | Approved | |
Oh-My-Posh 3.180.0 | 2187 | Sunday, September 5, 2021 | Approved | |
Oh-My-Posh 3.177.0 | 1416 | Saturday, September 4, 2021 | Approved | |
Oh-My-Posh 3.176.0 | 173 | Saturday, September 4, 2021 | Approved | |
Oh-My-Posh 3.175.0 | 128 | Saturday, September 4, 2021 | Approved | |
Oh-My-Posh 3.174.0 | 78 | Saturday, September 4, 2021 | Approved | |
Oh-My-Posh 3.144.0 | 2229 | Sunday, April 25, 2021 | Approved | |
Oh-My-Posh 3.141.2 | 786 | Thursday, April 22, 2021 | Approved | |
Oh-My-Posh 3.140.1 | 225 | Wednesday, April 21, 2021 | Approved | |
Oh-My-Posh 3.140.0 | 252 | Tuesday, April 20, 2021 | Approved | |
Oh-My-Posh 3.139.2 | 332 | Sunday, April 18, 2021 | Approved | |
Oh-My-Posh 3.139.1 | 147 | Sunday, April 18, 2021 | Approved | |
Oh-My-Posh 3.139.0 | 140 | Saturday, April 17, 2021 | Approved | |
Oh-My-Posh 3.137.3 | 260 | Friday, April 16, 2021 | Approved | |
Oh-My-Posh 3.137.2 | 284 | Wednesday, April 14, 2021 | Approved | |
Oh-My-Posh 3.137.1 | 193 | Wednesday, April 14, 2021 | Approved | |
Oh-My-Posh 3.137.0 | 286 | Tuesday, April 13, 2021 | Approved | |
Oh-My-Posh 3.136.0 | 185 | Monday, April 12, 2021 | Approved | |
Oh-My-Posh 3.135.2 | 214 | Monday, April 12, 2021 | Approved | |
Oh-My-Posh 3.134.0 | 235 | Saturday, April 10, 2021 | Approved | |
Oh-My-Posh 3.133.1 | 351 | Tuesday, April 6, 2021 | Approved | |
Oh-My-Posh 3.133.0 | 236 | Monday, April 5, 2021 | Approved | |
Oh-My-Posh 3.132.0 | 238 | Saturday, April 3, 2021 | Approved | |
Oh-My-Posh 3.131.0 | 125 | Friday, April 2, 2021 | Approved | |
Oh-My-Posh 3.130.1 | 83 | Thursday, April 1, 2021 | Approved | |
Oh-My-Posh 3.130.0 | 99 | Wednesday, March 31, 2021 | Approved | |
Oh-My-Posh 3.129.1 | 201 | Tuesday, March 30, 2021 | Approved | |
Oh-My-Posh 3.129.0 | 132 | Sunday, March 28, 2021 | Approved | |
Oh-My-Posh 3.127.0 | 135 | Sunday, March 28, 2021 | Approved | |
Oh-My-Posh 3.125.0 | 135 | Saturday, March 27, 2021 | Approved | |
Oh-My-Posh 3.124.0 | 130 | Saturday, March 27, 2021 | Approved | |
Oh-My-Posh 3.123.0 | 89 | Friday, March 26, 2021 | Approved | |
Oh-My-Posh 3.122.1 | 127 | Friday, March 26, 2021 | Approved | |
Oh-My-Posh 3.122.0 | 116 | Friday, March 26, 2021 | Approved | |
Oh-My-Posh 3.120.1 | 535 | Wednesday, March 24, 2021 | Approved | |
Oh-My-Posh 3.120.0 | 355 | Tuesday, March 23, 2021 | Approved | |
Oh-My-Posh 3.118.0 | 212 | Monday, March 22, 2021 | Approved | |
Oh-My-Posh 3.117.2 | 211 | Saturday, March 20, 2021 | Approved | |
Oh-My-Posh 3.117.1 | 123 | Saturday, March 20, 2021 | Approved | |
Oh-My-Posh 3.117.0 | 167 | Saturday, March 20, 2021 | Approved | |
Oh-My-Posh 3.116.2 | 219 | Friday, March 19, 2021 | Approved | |
Oh-My-Posh 3.115.1 | 127 | Thursday, March 18, 2021 | Approved | |
Oh-My-Posh 3.115.0 | 229 | Wednesday, March 17, 2021 | Approved | |
Oh-My-Posh 3.114.0 | 173 | Wednesday, March 17, 2021 | Approved | |
Oh-My-Posh 3.113.0 | 307 | Monday, March 15, 2021 | Approved | |
Oh-My-Posh 3.112.1 | 139 | Sunday, March 14, 2021 | Approved | |
Oh-My-Posh 3.111.2 | 162 | Sunday, March 14, 2021 | Approved | |
Oh-My-Posh 3.111.1 | 185 | Saturday, March 13, 2021 | Approved | |
Oh-My-Posh 3.111.0 | 139 | Saturday, March 13, 2021 | Approved | |
Oh-My-Posh 3.110.0 | 145 | Friday, March 12, 2021 | Approved | |
Oh-My-Posh 2.0.496 | 1289 | Sunday, January 10, 2021 | Approved | |
Oh-My-Posh 2.0.492 | 647 | Thursday, December 10, 2020 | Approved | |
Oh-My-Posh 2.0.487 | 1112 | Friday, October 2, 2020 | Approved | |
Oh-My-Posh 2.0.478 | 318 | Friday, September 25, 2020 | Approved | |
Oh-My-Posh 2.0.476 | 248 | Tuesday, September 22, 2020 | Approved | |
Oh-My-Posh 2.0.472 | 371 | Tuesday, September 15, 2020 | Approved | |
Oh-My-Posh 2.0.468 | 564 | Thursday, August 27, 2020 | Approved | |
Oh-My-Posh 2.0.465 | 493 | Wednesday, August 12, 2020 | Approved | |
Oh-My-Posh 2.0.459 | 161 | Tuesday, August 11, 2020 | Approved | |
Oh-My-Posh 2.0.449 | 483 | Friday, July 24, 2020 | Approved | |
Oh-My-Posh 2.0.443 | 382 | Friday, July 3, 2020 | Approved | |
Oh-My-Posh 2.0.440 | 603 | Friday, June 5, 2020 | Approved | |
Oh-My-Posh 2.0.412 | 466 | Thursday, April 23, 2020 | Approved | |
Oh-My-Posh 2.0.399 | 713 | Friday, March 13, 2020 | Approved | |
Oh-My-Posh 2.0.385 | 399 | Friday, February 21, 2020 | Approved | |
Oh-My-Posh 2.0.381 | 297 | Wednesday, February 5, 2020 | Approved | |
Oh-My-Posh 2.0.379 | 231 | Sunday, February 2, 2020 | Approved | |
Oh-My-Posh 2.0.374 | 156 | Saturday, February 1, 2020 | Approved | |
Oh-My-Posh 2.0.371 | 172 | Friday, January 31, 2020 | Approved | |
Oh-My-Posh 2.0.342 | 406 | Saturday, December 7, 2019 | Approved | |
Oh-My-Posh 2.0.332 | 183 | Thursday, November 28, 2019 | Approved | |
Oh-My-Posh 2.0.311 | 440 | Saturday, November 9, 2019 | Approved |
This package has no dependencies.
Ground Rules:
- This discussion is only about Oh-My-Posh and the Oh-My-Posh package. If you have feedback for Chocolatey, please contact the Google Group.
- This discussion will carry over multiple versions. If you have a comment about a particular version, please note that in your comments.
- The maintainers of this Chocolatey Package will be notified about new comments that are posted to this Disqus thread, however, it is NOT a guarantee that you will get a response. If you do not hear back from the maintainers after posting a message below, please follow up by using the link on the left side of this page or follow this link to contact maintainers. If you still hear nothing back, please follow the package triage process.
- Tell us what you love about the package or Oh-My-Posh, or tell us what needs improvement.
- Share your experiences with the package, or extra configuration or gotchas that you've found.
- If you use a url, the comment will be flagged for moderation until you've been whitelisted. Disqus moderated comments are approved on a weekly schedule if not sooner. It could take between 1-5 days for your comment to show up.