<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Customization on kenji.blog</title><link>http://kenji.blog/es/tags/customization/</link><description>Recent content in Customization on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>es</language><copyright>kenjinote</copyright><lastBuildDate>Sun, 13 Sep 2026 00:00:00 +0900</lastBuildDate><atom:link href="http://kenji.blog/es/tags/customization/index.xml" rel="self" type="application/rss+xml"/><item><title>Personalización definitiva de Windows Terminal (temas y configuración de la consola)</title><link>http://kenji.blog/es/p/windows-terminal-ultimate-customization-guide/</link><pubDate>Sun, 13 Sep 2026 00:00:00 +0900</pubDate><guid>http://kenji.blog/es/p/windows-terminal-ultimate-customization-guide/</guid><description>&lt;img src="http://kenji.blog/p/windows-terminal-ultimate-customization-guide/img/eyecatch.jpg" alt="Featured image of post Personalización definitiva de Windows Terminal (temas y configuración de la consola)" />&lt;h1 id="introducción-por-qué-personalizar-windows-terminal-al-extremo">Introducción: ¿Por qué personalizar Windows Terminal al extremo?
&lt;/h1>&lt;p>En el desarrollo de software moderno, el emulador de terminal ha superado el ser una simple interfaz de entrada y salida de comandos para convertirse en la &amp;ldquo;cabina&amp;rdquo; más importante que afecta directamente la productividad de los desarrolladores. El antiguo &amp;ldquo;Símbolo del sistema (cmd.exe)&amp;rdquo; y la consola tradicional de &amp;ldquo;Windows PowerShell&amp;rdquo; (conhost.exe), que solían ser el estándar en entornos Windows, eran significativamente inferiores en comparación con los refinados entornos de terminal de Linux y macOS debido a su bajo rendimiento de renderizado, su falta de opciones de personalización y su soporte incompleto de Unicode.&lt;/p>
&lt;p>Sin embargo, con la llegada de &amp;ldquo;Windows Terminal&amp;rdquo;, un proyecto de código abierto liderado por Microsoft, esta situación ha cambiado drásticamente. Ofrece un renderizado de texto ultrarrápido gracias a la aceleración de hardware basada en DirectX, soporte nativo para interfaz de pestañas y división de paneles, configuración libre de atajos de teclado y funcionalidades avanzadas de gestión de perfiles. Windows Terminal es una aplicación extremadamente potente que cumple con todos los requisitos de un &amp;ldquo;terminal moderno&amp;rdquo; que los desarrolladores realmente deseaban.&lt;/p>
&lt;p>En este artículo, proporcionamos la guía definitiva de personalización para elevar este Windows Terminal a un entorno &amp;ldquo;supremo&amp;rdquo;. Más allá de los cambios estéticos superficiales, explicaremos de manera exhaustiva y desde una perspectiva técnica, los modelos matemáticos subyacentes del renderizado de texto, la estructura profunda de &lt;code>settings.json&lt;/code>, la implementación de Oh My Posh en PowerShell, la configuración de Starship en entornos WSL e incluso el análisis teórico de la latencia de renderizado.&lt;/p>
&lt;p>Esperamos que esta guía ayude a los lectores a construir su propio entorno de terminal definitivo y a mejorar drásticamente su experiencia diaria de programación.&lt;/p>
&lt;hr>
&lt;h1 id="1-arquitectura-de-renderizado-y-modelo-matemático-de-windows-terminal">1. Arquitectura de renderizado y modelo matemático de Windows Terminal
&lt;/h1>&lt;p>Detrás del funcionamiento tan rápido y fluido de Windows Terminal, existe un pipeline de renderizado sofisticado que aprovecha al máximo la pila de gráficos moderna de Windows. En lugar del GDI (Graphics Device Interface) tradicional, Windows Terminal emplea aceleración de hardware basada en GPU que utiliza DirectWrite y DirectX (Direct2D/Direct3D).&lt;/p>
&lt;p>A continuación se muestra un diagrama conceptual del pipeline de renderizado del terminal, desde la entrada de una tecla hasta que el texto se dibuja en la pantalla.&lt;/p>
&lt;pre class="mermaid">
flowchart TD
A[&amp;#34;Entrada del Usuario (Teclado/Ratón)&amp;#34;] --&amp;gt; B[&amp;#34;ConPTY (API de Pseudoterminal de Consola)&amp;#34;]
B --&amp;gt; C[&amp;#34;Lógica de la Aplicación del Terminal (Hilo de Entrada)&amp;#34;]
C --&amp;gt; D[&amp;#34;Gestión del Búfer de Texto y Analizador Sintáctico&amp;#34;]
D --&amp;gt; E[&amp;#34;DirectWrite (Diseño y Conformación de Texto)&amp;#34;]
E --&amp;gt; F[&amp;#34;Direct2D/Direct3D (Renderizado por Hardware)&amp;#34;]
F --&amp;gt; G[&amp;#34;Búfer de Fotogramas de la GPU&amp;#34;]
G --&amp;gt; H[&amp;#34;Salida de Pantalla&amp;#34;]
style A fill:#f9f,stroke:#333,stroke-width:2px
style H fill:#9ff,stroke:#333,stroke-width:2px
&lt;/pre>
&lt;h2 id="11-suavizado-de-bordes-antialiasing-de-subpíxeles-de-fuentes-y-geometría">1.1 Suavizado de bordes (antialiasing) de subpíxeles de fuentes y geometría
&lt;/h2>&lt;p>Para asegurar una alta legibilidad al dibujar texto, que no cause fatiga ocular incluso durante largas jornadas de trabajo, la tecnología de suavizado de bordes (antialiasing) es indispensable. DirectWrite soporta un avanzado suavizado de subpíxeles aplicando la tecnología ClearType.&lt;/p>
&lt;p>Cada píxel en una pantalla LCD (cristal líquido) estándar se compone de tres subpíxeles verticales u horizontales: R (rojo), G (verde) y B (azul). El antialiasing de subpíxeles es una técnica que controla el brillo utilizando esta alta resolución espacial en unidades de 1/3 de píxel, en lugar de unidades de un solo píxel (antialiasing en escala de grises).&lt;/p>
&lt;p>Sea $ f(x, y) $ una función binaria que define el contorno ideal de un glifo de una fuente vectorial. Si las coordenadas $ (x, y) $ dentro de un píxel están en el interior del glifo, entonces $ f(x, y) = 1 $; si están en el exterior, $ f(x, y) = 0 $.&lt;/p>
&lt;p>El brillo $ I_R $ de un solo subpíxel (por ejemplo, el subpíxel rojo) se calcula como la convolución de la integral de $ f(x, y) $ sobre el dominio espacial $ S_R $ de ese subpíxel, y una función de filtro $ h(x, y) $ para compensar las propiedades físicas de la pantalla y las características visuales humanas (como las características gamma).&lt;/p>
$$
I_R = \iint_{S_R} f(x, y) \ast h(x, y) \,dx\,dy
$$&lt;p>De manera similar, para el verde ($ I_G $) y el azul ($ I_B $), el brillo se calcula basándose en sus dominios respectivos $ S_G $ y $ S_B $. Windows Terminal logra un hermoso renderizado de texto sin demoras, y sin sobrecargar la CPU, procesando en paralelo estos complejos cálculos integrales y convolucionales a nivel de subpíxel mediante el uso de cachés de glifos generadas previamente (texturas Atlas) y sombreadores de píxeles (pixel shaders) de la GPU.&lt;/p>
&lt;hr>
&lt;h1 id="2-comprensión-completa-y-configuración-profunda-de-settingsjson">2. Comprensión completa y configuración profunda de settings.json
&lt;/h1>&lt;p>El núcleo de la personalización de Windows Terminal reside en editar el archivo de configuración &lt;code>settings.json&lt;/code>. Aunque muchos elementos se pueden modificar desde la pantalla de configuración GUI, para buscar la personalización definitiva y gestionar las versiones de la configuración con herramientas como Git, es fundamental tener conocimientos para editar directamente el JSON.&lt;/p>
&lt;p>El archivo de configuración consta principalmente de las siguientes 3 secciones:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>&lt;code>profiles&lt;/code>&lt;/strong>: Define el comportamiento y la apariencia (fuentes, fondo, directorio de inicio) de cada shell (PowerShell, cmd, WSL, Azure Cloud Shell, etc.).&lt;/li>
&lt;li>&lt;strong>&lt;code>schemes&lt;/code>&lt;/strong>: Define las paletas de colores de 16 colores (esquemas de colores) que se utilizan dentro del terminal.&lt;/li>
&lt;li>&lt;strong>&lt;code>actions&lt;/code>&lt;/strong>: Define acciones personalizadas (combinaciones de teclas o división de paneles) que se llaman desde atajos de teclado o desde la paleta de comandos.&lt;/li>
&lt;/ol>
&lt;h2 id="21-estructura-jerárquica-de-perfiles-y-modelo-de-herencia">2.1 Estructura jerárquica de perfiles y modelo de herencia
&lt;/h2>&lt;p>En la configuración de perfiles, las configuraciones comunes a todos los perfiles se describen en el objeto &lt;code>defaults&lt;/code>, y las configuraciones individuales se describen en cada objeto dentro del array &lt;code>list&lt;/code>. Este modelo de herencia elimina la redundancia en el archivo de configuración y mejora la mantenibilidad.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;profiles&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;defaults&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;font&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;face&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;CaskaydiaCove Nerd Font&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;size&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">11&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;weight&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;normal&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;features&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;calt&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;liga&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;useAcrylic&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">true&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;acrylicOpacity&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mf">0.85&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;cursorShape&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;filledBox&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;cursorBlinking&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">true&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;padding&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;12, 12, 12, 12&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;antialiasingMode&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;cleartype&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;historySize&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">10000&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;list&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;guid&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;{574e775e-4f2a-5b96-ac1e-a2962a402336}&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;hidden&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">false&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;PowerShell 7&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;source&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Windows.Terminal.PowershellCore&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;colorScheme&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Tokyo Night&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;backgroundImage&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;C:\\Users\\Username\\Pictures\\Terminal\\cyberpunk_bg.png&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;backgroundImageOpacity&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mf">0.15&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;backgroundImageStretchMode&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;uniformToFill&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;startingDirectory&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;%USERPROFILE%\\Projects&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;guid&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;{2c4de342-38b7-51cf-b940-2309a097f518}&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;hidden&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">false&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Ubuntu-22.04&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;source&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Windows.Terminal.Wsl&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;colorScheme&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;One Half Dark&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;startingDirectory&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;\\\\wsl$\\Ubuntu-22.04\\home\\username&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>En el ejemplo anterior, se ha añadido la configuración &lt;code>&amp;quot;features&amp;quot;: { &amp;quot;calt&amp;quot;: 1, &amp;quot;liga&amp;quot;: 1 }&lt;/code> para habilitar las ligaduras tipográficas en la fuente. Esto permite que múltiples caracteres como &lt;code>!=&lt;/code> o &lt;code>=&amp;gt;&lt;/code> se representen como un solo y hermoso símbolo, ideal para la programación.&lt;/p>
&lt;h2 id="22-configuraciones-modulares-con-json-fragments">2.2 Configuraciones modulares con JSON Fragments
&lt;/h2>&lt;p>Windows Terminal soporta un mecanismo de extensión llamado &amp;ldquo;JSON Fragments&amp;rdquo;. Se trata de un sistema que permite a aplicaciones de terceros (por ejemplo, una distribución WSL recién instalada o herramientas de desarrollo como Visual Studio) añadir perfiles y esquemas de color propios al terminal de manera dinámica y segura, sin modificar directamente el &lt;code>settings.json&lt;/code> principal del usuario.&lt;/p>
&lt;p>Los desarrolladores también pueden aplicar este mecanismo si desean gestionar su propia configuración por partes (los archivos JSON se combinan con solo colocarlos en un directorio especificado).&lt;/p>
&lt;hr>
&lt;h1 id="3-la-experiencia-visual-suprema-los-secretos-de-temas-fuentes-y-fondos">3. La experiencia visual suprema: Los secretos de temas, fuentes y fondos
&lt;/h1>&lt;p>La paleta de colores del terminal es un factor crucial que no solo afecta a la estética, sino también a la legibilidad del código y los registros, y a la reducción de la fatiga visual durante largas horas de trabajo.&lt;/p>
&lt;h2 id="31-creación-y-aplicación-de-esquemas-de-colores">3.1 Creación y aplicación de esquemas de colores
&lt;/h2>&lt;p>Existen muchos esquemas de colores para Windows Terminal disponibles en Internet (el sitio web &amp;ldquo;Windows Terminal Themes&amp;rdquo; es famoso). Puedes utilizar estas combinaciones de colores libremente agregándolas a tu array de &lt;code>schemes&lt;/code>.&lt;/p>
&lt;p>A continuación se muestra un ejemplo de definición JSON del tema &amp;ldquo;Tokyo Night&amp;rdquo;, el cual es inmensamente popular entre los desarrolladores en la actualidad. Es un tema de alto contraste y agradable a la vista, con tonos azules y violetas.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;schemes&amp;#34;&lt;/span>&lt;span class="err">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Tokyo Night&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;background&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#1A1B26&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;foreground&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#A9B1D6&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;black&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#32344A&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;red&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#F7768E&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;green&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#9ECE6A&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;yellow&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#E0AF68&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;blue&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#7AA2F7&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;purple&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#BB9AF7&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;cyan&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#7DCFFF&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;white&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#A9B1D6&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;brightBlack&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#414868&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;brightRed&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#F7768E&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;brightGreen&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#9ECE6A&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;brightYellow&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#E0AF68&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;brightBlue&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#7AA2F7&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;brightPurple&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#BB9AF7&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;brightCyan&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#7DCFFF&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;brightWhite&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#C0CAF5&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;cursorColor&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#C0CAF5&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;selectionBackground&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#33467C&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Cada color se especifica usando un código de color hexadecimal (HEX) y corresponde a cada número de color de la secuencia de escape ANSI (del 0 al 15).&lt;/p>
&lt;h2 id="32-instalación-de-nerd-fonts-y-optimización-de-la-configuración-de-fuentes-caskaydiacove-nerd-font">3.2 Instalación de Nerd Fonts y optimización de la configuración de fuentes (CaskaydiaCove Nerd Font)
&lt;/h2>&lt;p>Cuando se utilizan herramientas avanzadas de línea de comandos (prompt) como Oh My Posh o Starship, que mencionaremos más adelante, resulta imprescindible utilizar una fuente que contenga glifos especiales (iconos) como el símbolo de la rama de Git, los logotipos de los lenguajes de programación y los símbolos del sistema operativo. &amp;ldquo;Nerd Fonts&amp;rdquo; es una colección de fuentes de programación a las que se les han parcheado (añadido) estos iconos.&lt;/p>
&lt;p>La fuente de programación &amp;ldquo;Cascadia Code&amp;rdquo; desarrollada por Microsoft es excelente y muy fácil de leer, pero por defecto no incluye los iconos de Nerd Font. Por ello, es muy recomendable instalar &amp;ldquo;CaskaydiaCove Nerd Font&amp;rdquo;, que aplica el parche de Nerd Font a Cascadia Code.&lt;/p>
&lt;h3 id="pasos-de-instalación">Pasos de instalación:
&lt;/h3>&lt;ol>
&lt;li>Descarga el archivo &lt;code>CascadiaCode.zip&lt;/code> desde la &lt;a class="link" href="https://github.com/ryanoasis/nerd-fonts/releases" target="_blank" rel="noopener"
>página oficial de lanzamientos en GitHub de Nerd Fonts&lt;/a>.&lt;/li>
&lt;li>Descomprímelo, selecciona los archivos &lt;code>.ttf&lt;/code> incluidos, haz clic derecho y elige &amp;ldquo;Instalar para todos los usuarios&amp;rdquo;.&lt;/li>
&lt;li>Cambia el valor de &lt;code>font.face&lt;/code> en &lt;code>settings.json&lt;/code> a &lt;code>&amp;quot;CaskaydiaCove Nerd Font&amp;quot;&lt;/code>.&lt;/li>
&lt;/ol>
&lt;h2 id="33-efecto-acrílico-e-imágenes-de-fondo-para-una-experiencia-inmersiva">3.3 Efecto Acrílico e imágenes de fondo para una experiencia inmersiva
&lt;/h2>&lt;p>Una de las características que encarna el Fluent Design System de Windows 11 es el efecto de material &amp;ldquo;Acrylic (acrílico)&amp;rdquo;. Permite hacer que el fondo del terminal sea translúcido, desenfocando elegantemente la ventana o el fondo de escritorio que se encuentre detrás.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;useAcrylic&amp;#34;&lt;/span>&lt;span class="err">:&lt;/span> &lt;span class="kc">true&lt;/span>&lt;span class="err">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;acrylicOpacity&amp;#34;&lt;/span>&lt;span class="err">:&lt;/span> &lt;span class="mf">0.75&lt;/span>&lt;span class="err">,&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Además, es posible establecer cualquier imagen como fondo. También se admiten animaciones GIF, por lo que puedes crear fondos dinámicos. Puedes controlar de forma precisa la posición y la opacidad de la imagen.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;backgroundImage&amp;#34;&lt;/span>&lt;span class="err">:&lt;/span> &lt;span class="s2">&amp;#34;C:\\Users\\Username\\Pictures\\wallpapers\\anime_cyberpunk.gif&amp;#34;&lt;/span>&lt;span class="err">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;backgroundImageOpacity&amp;#34;&lt;/span>&lt;span class="err">:&lt;/span> &lt;span class="mf">0.2&lt;/span>&lt;span class="err">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;backgroundImageStretchMode&amp;#34;&lt;/span>&lt;span class="err">:&lt;/span> &lt;span class="s2">&amp;#34;none&amp;#34;&lt;/span>&lt;span class="err">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;backgroundImageAlignment&amp;#34;&lt;/span>&lt;span class="err">:&lt;/span> &lt;span class="s2">&amp;#34;bottomRight&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Esto permite realizar personalizaciones que incrementan tu motivación, como colocar un personaje o logo favorito de forma discreta en la esquina inferior derecha del terminal.&lt;/p>
&lt;hr>
&lt;h1 id="4-maximizando-la-productividad-división-de-paneles-atajos-de-teclado-y-paleta-de-comandos">4. Maximizando la productividad: División de paneles, atajos de teclado y paleta de comandos
&lt;/h1>&lt;p>Windows Terminal cuenta de forma nativa con características fundamentales (como la división de paneles de la pantalla) similares a las de multiplexores de terminales como tmux o screen.&lt;/p>
&lt;p>Al personalizar la sección de &lt;code>actions&lt;/code>, puedes dividir, mover y redimensionar la pantalla a tu voluntad solo con atajos de teclado, sin tocar en absoluto el ratón.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;actions&amp;#34;&lt;/span>&lt;span class="err">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;splitPane&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;split&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;auto&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;splitMode&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;duplicate&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span> &lt;span class="nt">&amp;#34;keys&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;alt+shift+d&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;splitPane&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;split&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;right&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span> &lt;span class="nt">&amp;#34;keys&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;alt+shift+plus&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;splitPane&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;split&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;down&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span> &lt;span class="nt">&amp;#34;keys&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;alt+shift+minus&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;moveFocus&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;direction&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;left&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span> &lt;span class="nt">&amp;#34;keys&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;alt+left&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;moveFocus&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;direction&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;right&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span> &lt;span class="nt">&amp;#34;keys&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;alt+right&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;moveFocus&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;direction&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;up&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span> &lt;span class="nt">&amp;#34;keys&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;alt+up&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;moveFocus&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;direction&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;down&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span> &lt;span class="nt">&amp;#34;keys&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;alt+down&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;resizePane&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;direction&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;left&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span> &lt;span class="nt">&amp;#34;keys&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;alt+shift+left&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;resizePane&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;direction&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;right&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span> &lt;span class="nt">&amp;#34;keys&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;alt+shift+right&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;resizePane&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;direction&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;up&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span> &lt;span class="nt">&amp;#34;keys&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;alt+shift+up&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;resizePane&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;direction&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;down&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span> &lt;span class="nt">&amp;#34;keys&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;alt+shift+down&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;closePane&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span> &lt;span class="nt">&amp;#34;keys&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;ctrl+w&amp;#34;&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Al configurar los atajos de teclado anteriores, puedes ajustar el tamaño de los paneles con &lt;code>Alt + Shift + Flecha&lt;/code> y cambiar rápidamente el enfoque entre paneles con &lt;code>Alt + Flecha&lt;/code>. De esta forma, puedes ejecutar un servidor local de Node.js en un panel para monitorear los registros, mientras usas comandos de Git en otro panel y verificas el estado de los contenedores Docker en un tercer panel, logrando un trabajo en paralelo avanzado y fluido.&lt;/p>
&lt;h2 id="41-modo-quake-terminal-desplegable-global">4.1 Modo Quake (Terminal desplegable global)
&lt;/h2>&lt;p>También se soporta el &amp;ldquo;Modo Quake (Modo Desplegable)&amp;rdquo;, que permite invocar el terminal desde la parte superior de la pantalla en cualquier momento, al estilo de la pantalla de consola del juego FPS &amp;ldquo;Quake&amp;rdquo;. Por defecto, pulsando &lt;code>Win + \&lt;/code>, se desliza un terminal con animación desde la parte superior que ocupa la mitad del tamaño de la ventana. Esto es de gran utilidad cuando quieres introducir un comando rápidamente.&lt;/p>
&lt;hr>
&lt;h1 id="5-automatización-del-diseño-de-inicio-utilizando-wtexe">5. Automatización del diseño de inicio utilizando &lt;code>wt.exe&lt;/code>
&lt;/h1>&lt;p>Tareas rutinarias como abrir el terminal en un directorio de proyecto específico cada mañana, dividir la pantalla en tres partes, y luego ejecutar los comandos de compilación del frontend, el inicio del servidor backend y la monitorización de la base de datos respectivamente, deben ser automatizadas.&lt;/p>
&lt;p>El ejecutable real de Windows Terminal, &lt;code>wt.exe&lt;/code>, admite potentes argumentos de línea de comandos, lo que te permite controlar mediante argumentos qué perfil utilizar y el estado de la división de los paneles al iniciar.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">wt&lt;/span> &lt;span class="n">-p&lt;/span> &lt;span class="s2">&amp;#34;PowerShell 7&amp;#34;&lt;/span> &lt;span class="n">-d&lt;/span> &lt;span class="s2">&amp;#34;C:\Projects\MyApp&amp;#34;&lt;/span> &lt;span class="p">;&lt;/span> &lt;span class="nb">split-pane&lt;/span> &lt;span class="n">-p&lt;/span> &lt;span class="s2">&amp;#34;Ubuntu-22.04&amp;#34;&lt;/span> &lt;span class="n">-d&lt;/span> &lt;span class="s2">&amp;#34;/var/log&amp;#34;&lt;/span> &lt;span class="n">-V&lt;/span> &lt;span class="p">;&lt;/span> &lt;span class="nb">split-pane&lt;/span> &lt;span class="n">-p&lt;/span> &lt;span class="s2">&amp;#34;cmd&amp;#34;&lt;/span> &lt;span class="n">-H&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Si guardas este comando como un acceso directo o archivo por lotes en Windows, la disposición de tu complejo entorno de desarrollo se restaurará al instante con un solo clic.&lt;/p>
&lt;hr>
&lt;h1 id="6-la-evolución-del-prompt-1-powershell-y-oh-my-posh">6. La evolución del prompt 1: PowerShell y Oh My Posh
&lt;/h1>&lt;p>&amp;ldquo;Oh My Posh&amp;rdquo; es lo que hace que PowerShell, el shell predeterminado en entornos Windows (especialmente la versión más reciente multiplataforma, PowerShell 7 / PowerShell Core), evolucione drásticamente. Oh My Posh es un motor de personalización de consola (prompt) para cualquier shell. Te presenta visualmente todos los estados que necesitas para el desarrollo, como tu directorio actual, las ramas y estados de modificación de Git, las versiones de Node.js o Python, o el contexto de Kubernetes.&lt;/p>
&lt;p>El siguiente diagrama de secuencia muestra cómo se carga Oh My Posh al iniciar PowerShell y cómo se renderiza la consola.&lt;/p>
&lt;pre class="mermaid">
sequenceDiagram
participant U as &amp;#34;Usuario&amp;#34;
participant WT as &amp;#34;Windows Terminal&amp;#34;
participant PS as &amp;#34;PowerShell Core (pwsh.exe)&amp;#34;
participant P as &amp;#34;$PROFILE (Microsoft.PowerShell_profile.ps1)&amp;#34;
participant OMP as &amp;#34;Ejecutable Oh My Posh&amp;#34;
U-&amp;gt;&amp;gt;WT: &amp;#34;Iniciar Perfil de PowerShell&amp;#34;
WT-&amp;gt;&amp;gt;PS: &amp;#34;Iniciar Proceso&amp;#34;
PS-&amp;gt;&amp;gt;P: &amp;#34;Cargar Script del Perfil&amp;#34;
P-&amp;gt;&amp;gt;OMP: &amp;#34;oh-my-posh init pwsh&amp;#34;
OMP--&amp;gt;&amp;gt;P: &amp;#34;Devolver Script/Funciones de Renderizado de Consola&amp;#34;
P--&amp;gt;&amp;gt;PS: &amp;#34;Evaluar Funciones (Invoke-Expression)&amp;#34;
PS-&amp;gt;&amp;gt;OMP: &amp;#34;Llamar a oh-my-posh print primary (con cada tecla Enter)&amp;#34;
OMP--&amp;gt;&amp;gt;PS: &amp;#34;Devolver Cadena Estilizada ANSI&amp;#34;
PS--&amp;gt;&amp;gt;WT: &amp;#34;Imprimir Cadena de la Consola&amp;#34;
WT--&amp;gt;&amp;gt;U: &amp;#34;Mostrar Consola Lista&amp;#34;
&lt;/pre>
&lt;h2 id="61-instalación-y-configuración-de-oh-my-posh">6.1 Instalación y configuración de Oh My Posh
&lt;/h2>&lt;p>En entornos Windows, puedes instalarlo fácilmente usando &lt;code>winget&lt;/code>, el administrador de paquetes oficial.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">winget&lt;/span> &lt;span class="n">install&lt;/span> &lt;span class="n">JanDeDobbeleer&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">OhMyPosh&lt;/span> &lt;span class="n">-s&lt;/span> &lt;span class="n">winget&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Después de la instalación, edita el script de perfil de PowerShell para inicializar Oh My Posh y que se cargue al iniciar. La ruta al perfil se almacena en la variable automática &lt;code>$PROFILE&lt;/code>.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">notepad&lt;/span> &lt;span class="nv">$PROFILE&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Una vez que el archivo esté abierto, añade el siguiente código.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Configuración de alias&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">Set-Alias&lt;/span> &lt;span class="n">ll&lt;/span> &lt;span class="nb">ls
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">Set-Alias&lt;/span> &lt;span class="n">g&lt;/span> &lt;span class="n">git&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Habilitar IntelliSense predictivo (módulo PSReadLine)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">Set-PSReadLineOption&lt;/span> &lt;span class="n">-PredictionSource&lt;/span> &lt;span class="nb">History
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">Set-PSReadLineOption&lt;/span> &lt;span class="n">-PredictionViewStyle&lt;/span> &lt;span class="n">ListView&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Inicialización de Oh My Posh&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Especifica el tema de tu preferencia (ej. jandedobbeleer).&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># La ruta de los temas integrados está en la variable de entorno $env:POSH_THEMES_PATH.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">oh-my&lt;/span>&lt;span class="n">-posh&lt;/span> &lt;span class="n">init&lt;/span> &lt;span class="n">pwsh&lt;/span> &lt;span class="p">-&lt;/span>&lt;span class="n">-config&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$env:POSH_THEMES_PATH&lt;/span>&lt;span class="s2">\tokyonight_storm.omp.json&amp;#34;&lt;/span> &lt;span class="p">|&lt;/span> &lt;span class="nb">Invoke-Expression&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Módulo Terminal-Icons para mostrar iconos en carpetas y archivos&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># (Requiere Install-Module -Name Terminal-Icons -Repository PSGallery -Force solo la primera vez)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">Import-Module&lt;/span> &lt;span class="n">-Name&lt;/span> &lt;span class="nb">Terminal-Icons&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Hay cientos de temas (configuraciones) disponibles y también puedes crear el tuyo propio completamente en formatos JSON, YAML o TOML. Se diseña la consola combinando libremente la información a mostrar en los lados izquierdo (Left) y derecho (Right) usando un concepto llamado &amp;ldquo;segmentos&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h1 id="7-la-evolución-del-prompt-2-arquitectura-wsl2-e-integración-de-starship">7. La evolución del prompt 2: Arquitectura WSL2 e integración de Starship
&lt;/h1>&lt;p>WSL2 (Windows Subsystem for Linux 2), que te permite ejecutar un núcleo de Linux real en Windows, es indispensable para el desarrollo web moderno y el desarrollo nativo en la nube. &amp;ldquo;Starship&amp;rdquo; es la solución óptima para personalizar la consola de los shells (Bash o Zsh) dentro de WSL.&lt;/p>
&lt;p>Starship es una consola multi-shell extremadamente rápida y personalizable escrita en Rust. Su mayor ventaja es que puedes reproducir exactamente el mismo prompt en cualquier shell, como Bash, Zsh o Fish, escribiendo un solo archivo de configuración (TOML).&lt;/p>
&lt;h2 id="71-instalación-de-starship">7.1 Instalación de Starship
&lt;/h2>&lt;p>Abre tu terminal de WSL (por ejemplo, Ubuntu) y ejecuta el script de instalación oficial.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl -sS https://starship.rs/install.sh &lt;span class="p">|&lt;/span> sh
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Luego, si utilizas Bash, añade lo siguiente al final de tu archivo &lt;code>~/.bashrc&lt;/code> para habilitar el hook.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># ~/.bashrc&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">eval&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="k">$(&lt;/span>starship init bash&lt;span class="k">)&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Si usas Zsh, añade lo siguiente al final de &lt;code>~/.zshrc&lt;/code>.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># ~/.zshrc&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">eval&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="k">$(&lt;/span>starship init zsh&lt;span class="k">)&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="72-personalización-definitiva-con-starshiptoml">7.2 Personalización definitiva con starship.toml
&lt;/h2>&lt;p>La configuración de Starship se especifica en &lt;code>~/.config/starship.toml&lt;/code>. Se caracteriza por estar en formato TOML, lo que lo hace más fácil de leer y escribir por los humanos que el JSON, y permite añadir comentarios.&lt;/p>
&lt;p>A continuación se muestra un ejemplo de configuración para lograr un prompt moderno y rico en información.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-toml" data-lang="toml">&lt;span class="line">&lt;span class="cl">&lt;span class="c"># ~/.config/starship.toml&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Definir el formato general (orden) de todo el prompt&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">format&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">[╭─](bold blue)$os$directory$git_branch$git_status$nodejs$python$golang$rust
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">[╰─$character](bold blue)&amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Configuración de visualización del icono del sistema operativo&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="nx">os&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">disabled&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="kc">false&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">format&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;[$symbol]($style) &amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="nx">os&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">symbols&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">Ubuntu&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">Windows&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">Macos&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">Alpine&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Configuración de visualización del directorio&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="nx">directory&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">style&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;bold cyan&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">read_only&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">truncation_length&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="mi">3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">truncate_to_repo&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="kc">true&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Configuración de la rama de Git&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="nx">git_branch&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">symbol&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">style&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;bold purple&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Configuración del estado de Git&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="nx">git_status&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">style&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;bold red&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">modified&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">staged&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">untracked&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">deleted&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;✖ &amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Carácter del prompt (símbolo de la línea de entrada)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="nx">character&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">success_symbol&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;[❯](bold green)&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">error_symbol&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;[❯](bold red)&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Con esta configuración, el prompt tiene una estructura de dos líneas: la primera línea muestra el icono del sistema operativo, la ruta del directorio actual, la rama y el estado de Git, y la información de versión de cada entorno de lenguaje (Node.js, Python, etc.). La segunda línea es una entrada sencilla que no satura el espacio en la pantalla cuando introduces comandos largos.&lt;/p>
&lt;hr>
&lt;h1 id="8-modelo-matemático-de-latencia-y-rendimiento-de-renderizado-en-el-terminal">8. Modelo matemático de latencia y rendimiento de renderizado en el terminal
&lt;/h1>&lt;p>Uno de los indicadores más importantes a la hora de evaluar la usabilidad de un terminal es la &amp;ldquo;&lt;strong>latencia de entrada (Input Latency)&lt;/strong>&amp;rdquo;. Hace referencia al retraso en el tiempo desde que se presiona una tecla en el teclado hasta que los colores de los píxeles correspondientes en la pantalla cambian y se recibe un feedback visual.&lt;/p>
&lt;p>Este retardo total $ T_{total} $ puede modelarse rigurosamente a nivel matemático como la suma de los siguientes componentes:&lt;/p>
$$
T_{total} = T_{hw\_input} + T_{os} + T_{pty} + T_{app} + T_{render} + T_{display}
$$&lt;p>El significado y el tiempo requerido típico de cada variable son los siguientes:&lt;/p>
&lt;ul>
&lt;li>$ T_{hw\_input} $: Latencia de hardware desde que el interruptor mecánico del teclado se enciende, es escaneado mediante el controlador USB y se envía la señal de interrupción (aproximadamente 1-5 ms).&lt;/li>
&lt;li>$ T_{os} $: Retraso de procesamiento de la cola de mensajes debido a la capa del controlador HID (Human Interface Device) del sistema operativo (aproximadamente 1-2 ms).&lt;/li>
&lt;li>$ T_{pty} $: Latencia debido al almacenamiento en búfer y la conversión de codificación de caracteres (como de UTF-8 a UTF-16) por parte del ConPTY (pseudoterminal) (aproximadamente 2-10 ms).&lt;/li>
&lt;li>$ T_{app} $: Tiempo de procesamiento por parte del shell (PowerShell/Bash) para interpretar el comando y determinar la salida en pantalla. El tiempo empleado en obtener el estado de Git por Oh My Posh o Starship también se incluye aquí (aproximadamente 10-50 ms).&lt;/li>
&lt;li>$ T_{render} $: Retraso de renderizado por parte de Windows Terminal (DirectWrite/DirectX) desde la rasterización de los glifos de texto como texturas, su transferencia a la memoria de la GPU, hasta el intercambio (flipping) del búfer (swap chain) (aproximadamente 2-8 ms).&lt;/li>
&lt;li>$ T_{display} $: Latencia de visualización desde que se envía la señal del búfer de fotogramas de la GPU al monitor, hasta que las moléculas de cristal líquido responden y cambian físicamente de estado emitiendo luz (velocidad de respuesta GtG, etc. aproximadamente 5-20 ms).&lt;/li>
&lt;/ul>
&lt;p>El equipo de desarrollo de Windows Terminal ha invertido grandes esfuerzos en minimizar especialmente $ T_{pty} $ y $ T_{render} $. En las primeras versiones, ocurrían picos de latencia (caídas de fotogramas o frame drops) debido a fallos en la caché durante la rasterización de texto, pero en las versiones recientes se ha introducido un algoritmo de &amp;ldquo;caché de glifos basada en Atlas&amp;rdquo; (Atlas-based glyph cache).&lt;/p>
&lt;p>Al convertir los glifos en Atlas, el dibujo de cadenas de texto se reduce a una sencilla operación matricial en la GPU, consistente en &amp;ldquo;recortar porciones de una enorme textura de fuente previamente generada en la memoria, y componerlas en la pantalla mediante mezcla alfa (alpha blending)&amp;rdquo;.&lt;/p>
&lt;p>Cuando la cadena de caracteres a dibujar tiene $ N $ caracteres, el coste de dibujo secuencial por parte de la CPU en el enfoque tradicional del GDI requería un tiempo de $ \mathcal{O}(N) $. Sin embargo, en el renderizado mediante Atlas basado en la GPU, es posible dibujar en un tiempo constante cercano a $ \mathcal{O}(1) $ gracias a los shaders paralelos.&lt;/p>
&lt;p>Como resultado de esto, incluso cuando se envía una gran cantidad de registros a la salida estándar (por ejemplo, mensajes de compilación de &lt;code>npm install&lt;/code> o de un gran proyecto en C++), Windows Terminal puede continuar desplazando el texto de forma suave a 60 fps (o en entornos con una alta tasa de refresco como 144Hz o más) sin experimentar caídas en el procesamiento.&lt;/p>
&lt;hr>
&lt;h1 id="9-solución-de-problemas-avanzados-y-técnicas-de-depuración">9. Solución de problemas avanzados y técnicas de depuración
&lt;/h1>&lt;p>Al personalizar Windows Terminal al extremo, es posible que te encuentres con problemas inesperados, como errores de sintaxis en los archivos de configuración o fallos en el renderizado de fuentes. Aquí presentamos técnicas avanzadas de solución de problemas para ingenieros.&lt;/p>
&lt;h2 id="91-validación-de-json-schema-de-settingsjson">9.1 Validación de JSON Schema de settings.json
&lt;/h2>&lt;p>La estructura de &lt;code>settings.json&lt;/code> está estrictamente definida, y se recomienda emplear un editor (como VS Code) para comprobar la sintaxis en tiempo real usando JSON Schema. Al abrir &lt;code>settings.json&lt;/code> en VS Code, el esquema de Windows Terminal se aplica de forma predeterminada, advirtiéndote al instante de nombres de propiedades no válidos o errores de tipo en los valores (por ejemplo, si especificas una cadena donde se esperaba un número) mediante subrayados ondulados.&lt;/p>
&lt;h2 id="92-análisis-de-rendimiento-del-prompt-profiling">9.2 Análisis de rendimiento del prompt (profiling)
&lt;/h2>&lt;p>Si la consola tarda demasiado en aparecer (hay un retraso entre el momento en que se presiona la tecla Enter y el momento en que aparece la siguiente línea de entrada), es probable que el tiempo de ejecución de Oh My Posh o Starship sea el problema. Oh My Posh tiene una función avanzada de depuración que mide el tiempo de representación de cada bloque.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">oh-my&lt;/span>&lt;span class="n">-posh&lt;/span> &lt;span class="n">debug&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Al ejecutar este comando, se mostrarán detalladamente las variables del entorno del terminal, la ruta del archivo de configuración cargado y el tiempo de procesamiento en milisegundos (ms) de cada segmento que compone la consola. Esto te permite identificar con precisión qué obtención de información está causando el cuello de botella (por ejemplo, obtener el estado de Git en un monorepositorio gigante, comprobar el estado de autenticación en un proveedor de la nube o la latencia de la red) y realizar ajustes como desactivar módulos innecesarios.&lt;/p>
&lt;h2 id="93-desactivación-de-la-aceleración-por-gpu-retorno-al-renderizado-por-software">9.3 Desactivación de la aceleración por GPU (retorno al renderizado por software)
&lt;/h2>&lt;p>Existen casos excepcionales donde hardware antiguo o errores en controladores de GPU específicos pueden causar parpadeos de pantalla (flickering) o que falten caracteres debido al renderizado de hardware por DirectX. En estos casos, hay una opción de configuración para forzar el cambio (fallback) hacia el renderizado por software.&lt;/p>
&lt;p>Añade la siguiente configuración al nivel raíz de tu &lt;code>settings.json&lt;/code>.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;softwareRendering&amp;#34;&lt;/span>&lt;span class="err">:&lt;/span> &lt;span class="kc">true&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Al hacer esto, se cambia al renderizado basado en la CPU (WARP) en lugar de la GPU. Aunque el rendimiento disminuye, puede garantizar la precisión del dibujo. Esta es una medida poderosa para aislar fallos relacionados con los gráficos.&lt;/p>
&lt;hr>
&lt;h1 id="conclusión">Conclusión
&lt;/h1>&lt;p>El verdadero valor de Windows Terminal va mucho más allá de ser un simple &amp;ldquo;sustituto del antiguo símbolo del sistema&amp;rdquo;. Una tecnología de renderizado de vanguardia impulsada por DirectX, un mecanismo de configuración flexible y poderoso basado en JSON, y una integración perfecta con diversas shells como WSL y PowerShell. Al comprender esto en profundidad y personalizar el terminal para que se adapte a tus necesidades, reducirás la fricción en el proceso de desarrollo al mínimo.&lt;/p>
&lt;p>Las diversas técnicas de configuración explicadas en este artículo (la personalización de los esquemas de color, la extensión de la información visual con Nerd Fonts, los prompts inteligentes y sensibles al contexto con Oh My Posh y Starship, y la construcción de un entorno multitarea mediante la división de paneles) no solo mejorarán tu experiencia de codificación diaria, sino que también impulsarán tu propia motivación frente al terminal.&lt;/p>
&lt;p>La optimización del entorno de desarrollo no tiene fin. Cada vez que aparezcan nuevas herramientas de línea de comandos y evolucione la arquitectura de los sistemas operativos, nuestros terminales también cambiarán de forma. Esperamos de todo corazón que este artículo sirva como una guía sólida para los lectores en su incesante viaje en busca del &amp;ldquo;entorno de desarrollo definitivo&amp;rdquo;.&lt;/p></description></item></channel></rss>