-
-
Notifications
You must be signed in to change notification settings - Fork 2.7k
Description
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:
- 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. - Binario "Light" (v29+): A partir de la versión 24+, el comando
oh-my-posh themesha sido eliminado. Los temas ya no vienen integrados en el ejecutable para reducir su tamaño. - 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 comandogridinterno, 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, ejecutaoh-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.).