Ce fut une course incroyable pour Oh MyPosh, mais le moment est venu de le faire passer d'un cran. De nos jours, les développeurs ne s'en tiennent plus à un shell / langue, ce sont tous des outils que nous utilisons pour résoudre un certain problème. La même chose doit s'appliquer à oh mon chic. Il est temps de s'adapter à cette philosophie.
C'est pourquoi cette version d'Oh My Posh entre en mode de maintenance pendant que je travaille dur pour sortir V3 de la porte. Étant donné que la V3 est entièrement différente sous le capot, elle est hébergée séparément pour l'instant. Du point de vue de l'utilisateur, il devrait donner la même expérience à l'extérieur de la boîte, avec l'avantage supplémentaire que les thèmes personnalisés sont une première classe, pas de citoyen de code.
Install-Module oh - my - posh - Scope CurrentUser - AllowPrereleaseUne documentation est également disponible, ce qui devrait offrir une meilleure expérience que ce Readme au cours des dernières années :-)
Si vous êtes un développeur qui cherche à ajouter des fonctionnalités, veuillez consulter la V3 pour voir si elle existe déjà là-bas. Sinon, n'hésitez pas à créer un problème ou un PR sur V3, je n'accepterai que les corrections de bogues sur V2 à partir de maintenant .
Un moteur à thème pour PowerShell inspiré du travail effectué par Chris Benti sur PS-Config et Oh-My-Zsh sur OSX et Linux (d'où le nom).
Plus d'informations sur les raisons pour lesquelles j'ai fait cela peuvent être trouvées sur mon blog.

Caractéristiques:
Vous devez utiliser un hôte de console moderne comme Conemu, Alacritty, Terminus, Hyper, Fluentterminal ou le terminal Windows officiel pour avoir une excellente expérience de terminal sur Windows.
Il existe plusieurs façons d'acquérir Windows Terminal - à partir du Microsoft Store, du GitHub Repo ou des méthodes de commande ci-dessous:
Via Winget (gestionnaire de packages officiels pour Windows):
winget install -- id = Microsoft.WindowsTerminal - eVia Chocolatey:
choco install microsoft - windows - terminalVia Scoop:
scoop install windows - terminal Les polices que j'utilise sont des polices Powerline, il y a un excellent référentiel les contenant. J'utilise Meslo LG M Regular for Powerline Nerd Font dans ma configuration CONEMU avec des couleurs personnalisées. Vous pouvez trouver mon thème ici.
Dans le cas où vous remarquerez des glyphes étranges après l'installation d'une police de choix, assurez-vous que les glyphes sont disponibles (peut-être qu'ils ont un emplacement différent dans la police, si c'est le cas, ajustez l'icône $ThemeSettings correct). S'il s'avère que le personnage que vous souhaitez n'est pas pris en charge, sélectionnez une police différente.
Vous devez utiliser la galerie PowerShell pour installer OH-My-Posh.
Installez Posh-Git et Oh-My-Posh:
Install-Module posh - git - Scope CurrentUser
Install-Module oh - my - posh - Scope CurrentUserActivez l'invite:
# Start the default settings
Set-Prompt
# Alternatively set the desired theme:
Set-Theme Agnoster Dans le cas où vous l'exécutez sur PS Core, assurez-vous également d'installer également la version 2.0.0-Beta1 de PSReadLine
Install-Module - Name PSReadLine - AllowPrerelease - Scope CurrentUser - Force - SkipPublisherCheckPour activer le moteur, modifiez votre profil PowerShell:
if ( ! ( Test-Path - Path $PROFILE )) { New-Item - Type File - Path $PROFILE - Force }
notepad $PROFILEAjoutez les lignes suivantes à votre profil PowerShell:
Import-Module posh - git
Import-Module oh - my - posh
Set-Theme ParadoxLa dernière commande définit le thème de la console. Vérifiez la liste des thèmes disponibles ci-dessous.
Énumérez la configuration actuelle:
$ThemeSettings 
Vous pouvez modifier les paramètres en manipulant $ThemeSettings . Cet exemple vous permet de modifier le symbole de branche à l'aide d'un caractère Unicode:
$ThemeSettings .GitSymbols.BranchSymbol = [ char ]::ConvertFromUtf32( 0xE0A0 )N'oubliez pas non plus les paramètres chics-git lui-même (activez l'indication de la cachette par exemple):
$GitPromptSettings Cachez votre username@domain lorsqu'il n'est pas dans une machine virtuelle pour les thèmes Agnoster, Fish, Honukai, Paradox et Sorin:
$DefaultUser = ' yourUsernameHere ' Set-Theme : définissez un thème du répertoire des thèmes. Si aucune correspondance n'est trouvée, elle ne sera pas modifiée. La saisie semi-automatique est disponible pour répertorier et compléter les thèmes disponibles.
Set-Theme paradox Show-ThemeColors : Afficher les couleurs utilisées par le thème

Show-Colors : Couleurs d'affichage configurées dans CONEMU

















Si vous souhaitez créer un thème, cela peut être fait assez facilement en ajoutant un fichier mytheme.psm1 dans le dossier indiqué dans $ThemeSettings.MyThemesLocation (le dossier par défaut ~DocumentsWindowsPowerShellPoshThemes , n'hésitez pas à le modifier).
La seule fonction requise est Write-Theme . Vous pouvez utiliser le modèle suivant pour commencer:
# 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 N'hésitez pas à utiliser les fonctions publiques Get-VCSStatus , Get-VcsInfo , Get-FormattedRootLocation , Get-ShortPath , Set-CursorForRightBlockWrite , Set-CursorUp , Set-Newline ou ajouter votre propre logique.
Pour tester la sortie dans Conemu, passez simplement à votre thème:
Set-Theme mythemeSi vous souhaitez inclure votre thème dans Oh-My-Posh, envoyez-moi un RP et j'essaierai de donner des commentaires dès que possible.
Heureux thème!
Comme il semble avoir accès aux informations de la pile lors de l'utilisation de PushD / POPD est en quelque sorte impossible à partir d'un thème, vous pouvez utiliser une solution de contournement proposée par Jonathan Leech-Pepin. Dans votre $PROFILE , ajoutez une variable qui agira comme un pointeur correctement déterminé pour récupérer le contexte de la pile:
$getStackContext = { Get-Location - Stack}Ensuite, dans votre thème personnalisé, accédez aux informations que vous souhaitez afficher:
$stackCount = ( & $getStackContext ).count Ceci est causé par la fonctionnalité ConsoleTitle . Comme expliqué par Andrew Stanton-Nurse, il est lié à la façon dont les terminaux fonctionnent avec les codes OSC. Le correctif consiste à désactiver la fonctionnalité ConsoleTitle lorsqu'il est dans ITERM2 en ajoutant l'extrait suivant à votre $PROFILE .
if ( $ env: LC_TERMINAL -eq " iTerm2 " ) {
$ThemeSettings .Options.ConsoleTitle = $false
}