Mejora la terminal de Windows con Oh My Posh

Personalizar el entorno de trabajo puede marcar una gran diferencia en la productividad y comodidad de un desarrollador. Una de las herramientas más populares para personalizar el prompt del terminal en Windows es Oh My Posh. Esta herramienta permite añadir temas visuales atractivos y funcionales a PowerShell y Windows Terminal, mejorando no solo el aspecto visual, sino también la funcionalidad del terminal.

En este artículo, te guiaré paso a paso sobre cómo instalar y configurar Oh My Posh en tu sistema Windows, aprovechando al máximo las capacidades de PowerShell y Windows Terminal.

📜 Tabla de Contenido

💾 Instala PowerShell

Windows PowerShell

Windows 11 usa por defecto Windows PowerShell la cual se encuentra basada en .Net Framework, para hacer uso de Oh My Posh debes instalar la versión de PowerShell multiplataforma. Existen diversas formas de realizar la instalación, puedes obtenerlo desde la Tienda de Windows o por medio de WinGet. Personalmente, prefiero hacer uso de Winget.

winget install Microsoft.PowerShell -s winget

💻 Configura Windows Terminal

A partir de Windows 11 22H2, la terminal por defecto es Windows Terminal, si ya tienes instalada la terminal de Windows puedes continuar con el siguiente paso, de lo contrario, puedes obtenerla desde la Tienda de Windows o por medio de WinGet.

winget install Microsoft.WindowsTerminal -s winget

Establece Windows Terminal como la aplicación de terminal por defecto

Una vez instalada la Terminal de Windows, puedes ingresar a las configuraciones haciendo clic derecho sobre un espacio en blanco de la barra de título de la terminal (no sobre la pestaña), o haciendo clic sobre la flecha hacia abajo (v) al lado de la última pestaña en la terminal y selecciona la opción Settings, o presionando la combinación de teclas Ctrl + ,

En las configuraciones de la terminal escoge la sección Startup. Del lado derecho en Default Profile escoge PowerShell. En Default Terminal Application, escoge la opción Windows Terminal. Haz clic en Save.

Default Terminal Application

A partir de este momento, utiliza la terminal de Windows con PowerShell para ejecutar todas las instrucciones.

Configura la política de ejecución de scripts de PowerShell

PowerShell se encuentra configurado de manera predeterminada con políticas que permiten o restringen la ejecución de comandos o scripts. Para una computadora de escritorio con Windows tiene asignada la política Restricted, la cual permite la ejecución de comandos individuales pero no permite scripts. En un Servidor de Windows la política RemoteSigned permite la ejecución de scripts y comandos locales, sin embargo, requiere una firma digital para los scripts y configuraciones descargadas de internet.

En lo personal, la configuración RemoteSigned ha sido más que suficiente para la mayoría de ocasiones. En PowerShell ejecuta el siguiente comando.

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force

Si el cambio de política se ejecuta de forma satisfactoria, no mostrará resultado alguno. Para poder visualizar el cambio, ejecuta el siguiente comando.

Get-ExecutionPolicy

El resultado esperado será

RemoteSigned

🤖 Instala y configura Oh My Posh

Oh My Posh es un motor de temas para el indicador de cualquier shell, muy personalizable. Puedes obtener Oh My Posh desde la Tienda de Windows o a través de WinGet.

winget install JanDeDobbeleer.OhMyPosh -s winget

Una vez finalizada la instalación, para que el PATH sea recargado, inicia una nueva pestaña de PowerShell en la Terminal de Windows.

Instala una fuente

Oh My Posh se encuentra diseñado para hacer uso de Nerd Fonts. Nerd Fonts consiste en fuentes populares con parches para incluir iconos, por lo que es necesario instalar una Nerd Font para poder visualizar los diferentes iconos en Oh My Posh.

Para instalar las fuentes a nivel de sistema, la siguiente instrucción debe ejecutarse en una nueva terminal como administrador.

oh-my-posh font install

Para instalar las fuentes a nivel de usuario, la instrucción a ejecutarse en una terminal sin privilegios de administrador es la siguiente:

oh-my-posh font install --user

Al ejecutar el comando, se desplegará una lista con diversas fuentes, Oh My Posh recomienda la fuente Meslo, la cual incluye la fuente Meslo LGM NF.

Install Meslo Nerd Font

Incluso puedes instalarla de forma directa.

oh-my-posh font install meslo

Puedes agregar el parámetro --user al final para realizar la instalación únicamente para el usuario actual.

Configura Windows Terminal para usar una Nerd Font

Una vez instalada la Nerd Font, debes configurar la Terminal de Windows para utilizarla. Esto puede realizarse al modificar las configuraciones de la terminal. La combinación de teclas por defecto es Ctrl + Shift + ,. Se abrirá en un editor el archivo settings.json, agrega el atributo font.face bajo el atributo defaults en profiles.

{
    "profiles":
    {
        "defaults":
        {
            "font":
            {
                "face": "MesloLGM Nerd Font"
            }
        }
    }
}

Configura la terminal de Visual Studio Code para usar una Nerd Font

En Visual Studio Code, es necesario configurar la terminal integrada para hacer uso de la Nerd Font. Esto puede realizarse ingresando a las configuraciones, la combinación de teclas por defecto es Ctrl + ,. En la barra de búsqueda escribe Integrated: Font Family o busca en las categorías Users > Features > Terminal. Reemplaza el valor existente por "MesloLGM Nerd Font".

Configura PowerShell para hacer uso de Oh My Posh

Debido a que estaremos utilizando Oh My Posh con PowerShell, la configuración necesaria se debe realizar sobre el script del perfil. La ubicación del perfil se encuentra en la ruta de la variable $PROFILE. Puedes editarlo haciendo uso de tu editor favorito.

code $PROFILE

Agrega la siguiente instrucción y guarda los cambios.

oh-my-posh init pwsh | Invoke-Expression

Una vez guardados los cambios, recarga el perfil para hacer efecto los cambios realizados.

. $PROFILE

El resultado será similar al siguiente:

Oh My Posh

Configura un tema

Al instalar Oh My Posh, tienes acceso a algunos temas que se encuentran incluidos por defecto. Si deseas visualizar cada tema posible, puedes usar el siguiente comando.

Get-PoshThemes

Se mostrarán diversos estilos que puedes utilizar. Un ejemplo de todos los temas lo puedes encontrar en la [documentación de temas de Oh My Posh.

Una vez hayas encontrado un tema que desees probar, procede a ubicar el nombre del archivo de configuración del tema, puedes ubicarlo al hacer Clic en el nombre del tema en la terminal o en la documentación de temas, el nombre del archivo finaliza con .omp.json.

Por ejemplo, para configurar el tema minimalista zash, el cual muestra únicamente el nombre del usuario, carpeta actual y rama de git activa en la carpeta, el archivo de configuración del tema corresponde a zash.omp.json. Ese archivo se encuentra descargado en la ruta "$env:POSH_THEMES_PATH/zash.omp.json", por lo que en tu perfil de PowerShell debes modificar la configuración de la siguiente manera.

oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH/zash.omp.json" | Invoke-Expression

Una vez guardados los cambios, recarga el perfil para hacer efecto los cambios realizados.

. $PROFILE

El resultado será el siguiente:

Oh My Posh Zash Theme

Explora los diversos temas de Oh My Posh y configura el que mejor se adecue a tus necesidades.

🔝 Sube de nivel instalando estos módulos y aplicaciones

📦 PSReadLine

Si usas Windows y quieres aprovechar algunas funciones típicas de bash, como el coloreado de sintaxis, la búsqueda en el historial y la personalización de teclas, te podría interesar PSReadLine. Este módulo de PowerShell trae una versión de readline con inspiración en bash para Windows, mejorando la experiencia de edición en la línea de comandos de PowerShell, haciéndola más interactiva y fácil de usar.

Para instalar PSReadLine puedes ejecutar el siguiente comando para la versión pre-release, la cual normalmente tendrá más funcionalidades, sin embargo, puede contener algún bug. Personalmente, no he tenido inconvenientes con esta versión.

Install-Module PSReadLine -AllowPrerelease -Force

O puedes instalar la versión estable.

Install-Module PSReadLine

Una vez instalada, actualiza tu perfil para activar el módulo.

code $PROFILE

Coloca al inicio del archivo la siguiente configuración. Te permitirá adicionalmente mover el cursor al final de la instrucción cuando navegas por el historial, navegar por el historial con las teclas de cursor arriba y abajo, sin embargo, si ya escribiste algún texto buscará el texto ingresado mientras navegas en el historial.

Import-Module PSReadLine
Set-PSReadLineOption -HistorySearchCursorMovesToEnd
Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward
Set-PSReadLineKeyHandler -Key DownArrow -Function HistorySearchForward
Set-PSReadLineKeyHandler -Key Tab -Function Complete

Una vez guardados los cambios, refresca tu perfil.

. $PROFILE

Con la configuración anterior tendrás PSReadLine activo. Tu terminal tendrá colores de sintaxis para los comandos y sus argumentos, historia de comandos, búsqueda, completado de comandos y combinaciones de teclas configurables. Puedes validar las combinaciones de teclas por defecto con el siguiente comando.

Get-PSReadLineKeyHandler

📦 Terminal-Icons

Terminal-Icons es un módulo de PowerShell que muestra íconos de archivos y carpetas al listar elementos en la terminal. Para funcionar, utiliza las fuentes personalizadas que ofrece Nerd Fonts.

Para instalar Terminal-Icons puedes ejecutar el siguiente comando:

Install-Module -Name Terminal-Icons -Repository PSGallery

Una vez instalada, actualiza tu perfil para activar el módulo.

code $PROFILE

Coloca la siguiente configuración posterior a PSReadLine y antes de Oh My Posh.

Import-Module -Name Terminal-Icons

Una vez guardados los cambios, refresca tu perfil.

. $PROFILE

Con la configuración anterior tendrás Terminal-Icons activo. Prueba ejecutar el comando ls.

Terminal-Icons

📦 bat

bat es un clon de cat con resaltado de sintaxis e integración con Git.

Puedes instalar bat por medio de WinGet.

winget install sharkdp.bat

bat


💬 Comenta, ¿Qué otra herramienta consideras que deba agregar al listado?


Foto de Ashkan Forouzani en Unsplash