Skip to content

Guía de Supervivencia: Oh My Posh v29 + PowerShell 7.5 #7347

@touxstone

Description

@touxstone

Code of Conduct

  • I agree to follow this project's Code of Conduct

What would you like to see changed/added?

Guía de Supervivencia: Oh My Posh v29 + PowerShell 7.5 (Edición Winget)

by RS Montalvo

Documentar, documentar, documentar (y sobrevivir a) los "choques" entre herramientas (Winget + PowerShell 7.5 + OMP v29)

Si has intentado configurar tu terminal recientemente usando Winget y te has encontrado con que los temas no aparecen, el comando themes no existe o el autocompletado ha dejado de funcionar al activar el modo Emacs, no estás solo. Aquí explicamos por qué sucede y cómo arreglarlo de forma definitiva.

1. El Problema: El "Limbo" de Winget y la v29

Al instalar Oh My Posh con el comando winget install JanDeDobbeleer.OhMyPosh, ocurren tres cosas que rompen la experiencia de usuario:

  1. Rutas volátiles: Winget instala el binario en carpetas de sistema protegidas o rutas de paquetes (AppData\Local\Microsoft\WinGet\Packages), haciendo que los temas sean difíciles de localizar.
  2. Binario "Light" (v29+): A partir de la versión 24+, el comando oh-my-posh themes ha sido eliminado. Los temas ya no vienen integrados en el ejecutable para reducir su tamaño.
  3. Conflicto de PSReadLine: Al activar Set-PSReadLineOption -EditMode Emacs, la tecla Tab pierde su función de autocompletado estándar de Windows, quedando aparentemente "muerta".

2. La Solución: Control total y persistente

Para solucionar esto, evitaremos las rutas automáticas de Winget y centralizaremos los recursos en nuestro perfil de usuario.

Paso A: Instalación manual de Temas (Assets)

Como el comando themes install ya no existe en el binario v29, descargamos el pack oficial directamente a una carpeta local persistente:

# Crear carpeta de temas en el perfil de usuario
mkdir "$HOME\.poshthemes" -Force

# Descargar y extraer el pack oficial de temas
$url = "https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/themes.zip"
Invoke-WebRequest -Uri $url -OutFile "$HOME\.poshthemes\themes.zip"
Expand-Archive -Path "$HOME\.poshthemes\themes.zip" -DestinationPath "$HOME\.poshthemes" -Force
Remove-Item "$HOME\.poshthemes\themes.zip"

Paso B: Configuración del Perfil ($PROFILE)

Para que todo funcione en armonía (Temas + Modo Emacs + Autocompletado), abre tu perfil con notepad $PROFILE y utiliza este bloque de configuración:

# 1. Inicializar Oh My Posh con una ruta de tema fija
# Sustituye 'jandedobbeleer.omp.json' por tu favorito
$themePath = "$HOME\.poshthemes\jandedobbeleer.omp.json"
oh-my-posh init pwsh --config $themePath | Invoke-Expression

# 2. Configurar PSReadLine (Modo Emacs + Fix de Tab)  **OPCIONAL**
Set-PSReadLineOption -EditMode Emacs

# IMPORTANTE: Re-mapear Tab para recuperar el autocompletado
# Usamos 'MenuComplete' para una experiencia visual superior
Set-PSReadLineKeyHandler -Key "Tab" -Function MenuComplete

# 3. Predicciones inteligentes (Opcional pero recomendado)
Set-PSReadLineOption -PredictionSource History
Set-PSReadLineOption -PredictionViewStyle ListView

3. Comandos de utilidad post-instalación

  • ¿Cómo ver los temas instalados?
    Ya que no existe el comando grid interno, usa este "one-liner" para previsualizar los archivos JSON descargados:
Get-ChildItem "$HOME\.poshthemes\*.json" | ForEach-Object { write-host "`n- Tema: $($_.Name)"; oh-my-posh print primary --config $_.FullName }
  • ¿Por qué oh-my-posh debug?
    Si alguna vez dudas de qué versión usas o qué rutas está leyendo el sistema, ejecuta oh-my-posh debug. Es la fuente de verdad del motor.

Nota: Si tras seguir estos pasos los iconos se ven como cuadrados, aseguraos de tener instalada una Nerd Font y configurada en vuestra terminal (Terminal de Windows, VS Code, etc.).

Metadata

Metadata

Labels

📖 docsA documentation change/addition

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions