Ha sido un viaje increíble para Oh MyPosh, pero ha llegado el momento de avanzar en una muesca. Los desarrolladores hoy en día ya no se adhieren a un shell/idioma, son todas las herramientas que usamos para resolver un cierto problema. Lo mismo debe aplicar a Oh My Posh. Es hora de adaptarse a esa filosofía.
Es por eso que esta versión de Oh My Posh está entrando en modo de mantenimiento mientras estoy trabajando duro para sacar a V3 de la puerta. Dado que V3 es completamente diferente debajo del capó, está alojado por separado por ahora. Desde una perspectiva del usuario, debe dar la misma experiencia fuera de la caja, con la ventaja adicional de que los temas personalizados son un ciudadano de primera clase, sin código.
Install-Module oh - my - posh - Scope CurrentUser - AllowPrereleaseLa documentación también está disponible, lo que debería dar una mejor experiencia que este ReadMe en los últimos años :-)
Si es un desarrollador que busca agregar funcionalidad, eche un vistazo a V3 para ver si ya existe allí. Si no, no dude en crear un problema o PR en V3, solo aceptaré correcciones de errores en V2 a partir de ahora .
Un motor temático para PowerShell inspirado en el trabajo realizado por Chris Benti en PS-Config y Oh-My-Zsh en OSX y Linux (de ahí el nombre).
Se puede encontrar más información sobre por qué hice esto en mi blog.

Características:
Debe usar un host de consola moderno como Conemu, Alacritty, Terminus, Hyper, FluentTerminal o el terminal de Windows oficial para tener una excelente experiencia terminal en las ventanas.
Hay múltiples formas de adquirir el terminal de Windows: de la tienda de Microsoft, el repositorio de GitHub o los siguientes métodos de línea de comandos:
A través de Winget (Administrador de paquetes oficial para Windows):
winget install -- id = Microsoft.WindowsTerminal - eVía chocolate:
choco install microsoft - windows - terminalVía SCOOP:
scoop install windows - terminal Las fuentes que uso son fuentes de línea eléctrica, hay un gran repositorio que las contiene. Utilizo Meslo LG M Regular for Powerline Nerd Font en mi configuración Conemu junto con colores personalizados. Puedes encontrar mi tema aquí.
En caso de que note los glifos extraños después de instalar una fuente de elección, asegúrese de que los glifos estén disponibles (tal vez tengan una ubicación diferente en la fuente, de ser así, ajuste el icono correcto $ThemeSettings ). Si resulta que el personaje que desea no es compatible, seleccione una fuente diferente.
Debe usar la Galería PowerShell para instalar OH-My-Posh.
Instale Posh-Git y Oh-My-Posh:
Install-Module posh - git - Scope CurrentUser
Install-Module oh - my - posh - Scope CurrentUserHabilitar el aviso:
# Start the default settings
Set-Prompt
# Alternatively set the desired theme:
Set-Theme Agnoster En caso de que esté ejecutando esto en PS Core, asegúrese de instalar también la versión 2.0.0-beta1 de PSReadLine
Install-Module - Name PSReadLine - AllowPrerelease - Scope CurrentUser - Force - SkipPublisherCheckPara habilitar el motor, edite su perfil de PowerShell:
if ( ! ( Test-Path - Path $PROFILE )) { New-Item - Type File - Path $PROFILE - Force }
notepad $PROFILEAgregue las siguientes líneas a su perfil de PowerShell:
Import-Module posh - git
Import-Module oh - my - posh
Set-Theme ParadoxEl último comando establece el tema de la consola. Verifique la lista de temas disponibles a continuación.
Enumere la configuración actual:
$ThemeSettings 
Puede ajustar la configuración manipulando $ThemeSettings . Este ejemplo le permite ajustar el símbolo de la rama usando un carácter unicode:
$ThemeSettings .GitSymbols.BranchSymbol = [ char ]::ConvertFromUtf32( 0xE0A0 )Tampoco olvide la configuración POSH-git en sí misma (habilite la indicación de alijo, por ejemplo):
$GitPromptSettings Oculte su username@domain cuando no esté en una máquina virtual para temas de Agnoster, Fish, Honukai, Paradox y Sorin:
$DefaultUser = ' yourUsernameHere ' Set-Theme : Establezca un tema del directorio de temas. Si no se encuentra ninguna coincidencia, no se cambiará. AutoComplete está disponible para la lista y completar los temas disponibles.
Set-Theme paradox Show-ThemeColors : muestre los colores utilizados por el tema

Show-Colors : visualización de colores configurados en conemu

















Si desea crear un tema, se puede hacer bastante fácilmente agregando un archivo mytheme.psm1 en la carpeta indicada en $ThemeSettings.MyThemesLocation (la carpeta predeterminada a ~DocumentsWindowsPowerShellPoshThemes , no dude en cambiarla).
La única función requerida es Write-Theme . Puede usar la siguiente plantilla para comenzar:
# 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 Siéntase libre de usar las funciones públicas de ayuda de ayuda Get-VCSStatus , Get-VcsInfo , Get-FormattedRootLocation , Get-ShortPath , Set-CursorForRightBlockWrite , Set-CursorUp , Set-Newline o agregue su propia lógica por completo.
Para probar la salida en conemu, simplemente cambie a su tema:
Set-Theme mythemeSi desea incluir su tema en OH-My-Posh, envíeme un PR e intentaré dar comentarios lo antes posible.
¡Feliz temas!
Como parece que obtener acceso a la información de la pila cuando se usa Pushd/POPD es una misión imposible desde un tema, puede usar una solución propuesta por Jonathan Leech-Pepin. En su $PROFILE , agregue una variable que actúe como un puntero correctamente alcanzado para obtener el contexto de la pila:
$getStackContext = { Get-Location - Stack}A continuación, en su tema personalizado, acceda a la información que desea mostrar:
$stackCount = ( & $getStackContext ).count Esto es causado por la funcionalidad ConsoleTitle . Según lo explicado por Andrew Stanton-Nurse, está vinculado a cómo funcionan los terminales con los códigos OSC. La solución es deshabilitar la funcionalidad ConsoleTitle cuando está en ITERM2 agregando el siguiente fragmento a su $PROFILE .
if ( $ env: LC_TERMINAL -eq " iTerm2 " ) {
$ThemeSettings .Options.ConsoleTitle = $false
}