Windows Terminal es una aplicación de terminal moderna para Windows 10, muy personalizable, rápida, agradable y productiva. Mejora sustancialmente la pobre terminal que lleva años arrastrando (cmd), incorporando características como soporte de pestañas, personalización de tipografía, efectos y también permite utilizar diferentes shells, como por ejemplo, el Símbolo de sistema de Windows (cmd), PowerShell o incluso la nueva WSL (Windows Subsystem for Linux), que es en la que nos enfocaremos en este artículo.

Instalación de Windows Terminal

Antes de comenzar, comentar que existen dos versiones que podemos utilizar, la versión oficial y la versión preview. La podemos instalar desde la tienda oficial de Microsoft:

Aplicación Descripción Enlace a tienda
Windows Terminal Versión oficial de Windows Terminal. Windows Terminal
Windows Terminal Preview Versión beta de Windows Terminal. Windows Terminal Preview

La versión preview es una especie de versión beta que incorpora algunas novedades que aún no están disponibles en la oficial. Personal y subjetivamente, suelo utilizar la versión preview, ya que incorpora varias mejoras interesantes, y sólo utilizo la oficial si surge algún problema específico que no permite utilizar la preview con naturalidad.

Este es el aspecto de una Windows Terminal Preview configurada:

Windows Terminal

En el icono de la flecha hacia abajo, nos aparece un menú desplegable donde podemos seleccionar la opción Configuración o Settings. Esto nos abrirá un archivo JSON con la configuración que vamos a modificar a continuación para personalizarla a nuestro gusto.

El fichero JSON de configuración tiene varios apartados, cada uno para algo concreto. La estructura es la siguiente:

{
  /* Opciones globales */
  "$schema": "https://aka.ms/terminal-profiles-schema",
  /* ... */
  /* Perfiles */
  "profiles": {
    "defaults": {
      /* Opciones que se aplicarán siempre, por defecto */
    },
    "list": [
      /* Lista de shells disponibles: Cmd, PowerShell, WSL... */
    ]
  },
  "schemes": [
    /* Lista de esquemas de color */
  ],
  "actions": [
    /* Lista de atajos de teclado */
  ]
}

Cada una de estas secciones tiene un objetivo específico. Veamos su significado:

Sección Descripción
profiles / defaults Opciones por defecto que se aplicarán a cualquier pestaña de terminal abierta.
profiles / list Lista de diferentes perfiles de terminales que puedes abrir (Cmd, PowerShell, WSL...)
schemes Configuración o esquema de colores para una terminal.
actions Atajo de teclado para realizar una acción.

En el interior de cada una de estas secciones escribiremos los detalles de configuración que impliquen a cada una.

Cambiar la tipografía

Uno de los primeros pasos que probablemente queramos realizar es cambiar la fuente de Windows Terminal y poner una que nos guste más y se adapte a nuestros gustos. Personalmente, me gusta trabajar con Victor Mono, una tipografía gratuita orientada a programación, con ligaduras e interesantes estilos agradablemente visuales. Sin embargo, puedes utilizar otra si te gusta más. Otras tipografías interesantes podrían ser Cascadia Code, Fira Code o echar un vistazo en Nerd Fonts o DevFonts.

Ten en cuenta que algunas tipografías no cuentan con características de adornos para terminales. Si quieres asegurarte de ello, busca tipografías Powerline, que es como se denominan las tipografías con adornos para terminales.

En primer lugar, instalamos las tipografías descargándonos el fichero .zip y buscando la carpeta TTF. En ella aparecen varios ficheros con los diferentes estilos de la tipografía. Los seleccionamos todos y con botón derecho pulsamos Instalar. De esta forma, ya las tendremos instaladas en nuestro sistema.

Opción Descripción
fontFace Indica el nombre de la tipografía a utilizar (debe estar instalada).
fontSize Indica el tamaño de la tipografía a utilizar.
fontWeight Indica el peso (grosor) de la tipografía a utilizar. Valores entre 100 y 900.

En segundo lugar, accedemos al apartado profiles / defaults, ya que normalmente queremos que todos los tipos de terminales que utilicemos usen la misma configuración de tipografía. No obstante, si prefieres crear diferentes perfiles, puedes hacerlo desde un tipo de terminal concreta (ver siguiente punto). Quedaría algo así:

"profiles": {
  "defaults": {
    "fontFace": "Victor Mono",
    "fontSize": 15,
    "fontWeight": 400
  }
}

Con esto usaremos la tipografía Victor Mono a un tamaño de 15 píxeles, y un peso 400 (normal) en todas las pestañas de terminal que abramos. Sean del tipo que sean.

Activar el modo retro

Es posible activar un modo experimental de Windows Terminal llamado modo retro, que emula las terminales en pantallas antiguas, con un efecto visual como el que puedes ver en la siguiente imagen:

Modo retro en Windows Terminal

Para conseguir este efecto, solo tenemos que activar la siguiente opción dentro de la terminal donde queramos activarla, o en profiles / defaults si queremos que esté activo en todos los tipos de terminal:

{
  "profiles": {
    "defaults": {
      "experimental.retroTerminalEffect": true
    }
  }
}

Añadir o modificar terminales

En el apartado profiles / list nos aparece una lista de terminales (shells) a utilizar. En windows podemos utilizar una consola de windows (más conocida como Símbolo de Sistema o CMD), una terminal de PowerShell (un poco más avanzada) o una terminal de WSL, que son de las que hablamos en esta sección del sitio web.

Las opciones principales que puede tener cada shell, serían las siguientes:

Opción Descripción
guid Identificador único interno, para que Windows Terminal sepa que grupo es.
name El nombre que nosotros veremos al mostrar la lista de tipos de terminales.
hidden Indica true para ocultar esta shell de la lista.
startingDirectory Establece la carpeta o directorio inicial, al abrir la terminal.
source Un atajo rápido para indicar el tipo de terminal. Es necesario tenerlo instalado.
commandline Alternativamente al anterior, se puede indicar la ruta o fichero a ejecutar.

Esto sería un ejemplo de varias listas de shells, que incluyen Debian (WSL), PowerShell, Cmd (Símbolo de sistema) y Azure:

"list": [
  {
    "guid": "{58ad8b0c-3ef8-5f4d-bc6f-13e4c00f2530}",
    "name": "Debian (WSL)",
    "hidden": false,
    "source": "Windows.Terminal.Wsl"
  },
  {
    "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
    "name": "Windows PowerShell",
    "hidden": true
    "commandline": "powershell.exe",
  },
  {
    "guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
    "name": "Símbolo del sistema",
    "hidden": false
    "commandline": "cmd.exe",
  },
  {
    "guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
    "name": "Azure Cloud Shell",
    "hidden": true,
    "source": "Windows.Terminal.Azure"
  }
]

Las opciones guid, name, hidden, source y commandline son las principales, pero no son las únicas. A continuación veremos múltiples opciones más que se pueden indicar para modificar el comportamiento de Windows Terminal.

Además, lo ideal es que modifiquemos nuestras listas y las adaptemos a nuestras necesidades (por ejemplo, si no usas PowerShell, puedes establecer hidden a true y no te aparecerá), ya que es la lista que nos va a aparecer cada vez que pulsemos en el icono de la flecha hacia abajo, a la derecha del añadir una nueva pestaña.

Abrir una carpeta por defecto

Por norma general, Windows Terminal abrirá la carpeta %USERPROFILE%, es decir, si nuestro usuario es Manz, pues la carpeta C:\Users\Manz, que en WSL será /mnt/c/Users/Manz. Es posible que queramos que eso no sea así, y nos abra la ruta del usuario en la partición de Linux.

Para ello, podemos utilizar la opción startingDirectory y establecer la ruta del directorio donde queremos que se coloque:

"list": [
  {
    "guid": "{58ad8b0c-3ef8-5f4d-bc6f-13e4c00f2530}",
    "name": "Debian (WSL)",
    "hidden": false,
    "startingDirectory": "//wsl$/Debian/home/manz/",
    "source": "Windows.Terminal.Wsl"
  },
  /* ... */
]

Observa que en este caso hemos establecido //wsl$/Debian/home/manz/. El texto //wsl$/ hace referencia al acceso a la interfaz de Windows Subsystem for Linux. El texto Debian se indica porque es el nombre de la distribución instalada en WSL. Por último, /home/manz/ es la ruta que queremos establecer por defecto al abrir la terminal.

Abrir una terminal por defecto

Es posible que en Windows Terminal se nos abra un tipo de terminal por defecto (por ejemplo, PowerShell) y busquemos cambiar a otra terminal por defecto, como por ejemplo la de WSL.

Para ello, crearemos una opción en la parte superior, donde están las opciones globales, con el nombre defaultProfile. En el valor, pondremos el código identificador guid de la terminal que nos interesa abrir por defecto. Algo parecido a lo siguiente:

{
  "$schema": "https://aka.ms/terminal-profiles-schema",
  "defaultProfile": "{58ad8b0c-3ef8-5f4d-bc6f-13e4c00f2530}"
  /* ... */
}

Observa que el guid con identificador {58ad8b0c-3ef8-5f4d-bc6f-13e4c00f2530} es Debian (WSL), por lo tanto, esta será la terminal que se abrirá por defecto al abrir Windows Terminal.

Existen otras opciones interesantes que se pueden establecer:

Opción Descripción
defaultProfile Indica el guid de la terminal que se quiere abrir por defecto.
startOnUserLogin Indica que Windows Terminal debe abrirse al iniciar sesión con un usuario.
launchMode Modo de inicio: default, maximized, fullscreen, focus, maximizedFocus.
initialCols Número de columnas de la terminal. Por defecto, 120.
initialRows Número de filas de la terminal. Por defecto, 30.
initialPosition Coordenadas donde se colocar la terminal. Por ejemplo, 100,25.

Esquemas de colores

En Windows Terminal existe la posibilidad de cambiar el esquema de colores usado en la terminal. Para ello podemos utilizar la opción colorScheme, con la que se puede indicar el esquema de colores específico en las diferentes terminales (o en profiles / defaults). Las opciones que es posible utilizar serían las siguientes:

Opción Descripción
colorScheme Nombre del esquema de colores que va a utilizar.
foreground Color de texto (sobreescribe el esquema de color en uso).
background Color de fondo (sobreescribe el esquema de color en uso).
selectionBackground Color de selección de cursor (sobreescribe el esquema de color en uso).

Las mencionadas opciones foreground, background y selectionBackground se utilizan cuando queremos sobreescribir el esquema de color existente y darle prioridad a ellas, independientemente del esquema utilizado.

Los esquemas de colores existentes son campbell, campbell powershell, vintage, one half dark, one half light, solarized dark, solarized light, tango dark y tango light. Si lo que queremos es utilizar un esquema de color personalizado, basta con crearlo en el apartado schemes, sin olvidar establecer el campo name para darle un nombre.

Un ejemplo de un esquema personalizado, que he llamado Manz Dark:

  "schemes": [
    {
      "name": "Manz Dark",
      "background": "#1a1a1a",
      "black": "#161616",
      "blue": "#3768db",
      "brightBlack": "#4b4b4b",
      "brightBlue": "#6795eb",
      "brightCyan": "#80c8c8",
      "brightGreen": "#28ad16",
      "brightPurple": "#a58af0",
      "brightRed": "#ff2020",
      "brightWhite": "#b3b3b3",
      "brightYellow": "#657B83",
      "cyan": "#19a599",
      "foreground": "#ebebeb",
      "green": "#31d14b",
      "purple": "#8928da",
      "red": "#c70000",
      "white": "#EEE8D5",
      "yellow": "#FFDD00"
    }
  ],

Recuerda que los códigos de colores son hexadecimal. Puedes obtenerlos usando herramientas como hslpicker, o el propio Google o DuckDuckGo.

Personalizar la ventana

Es posible personalizar ciertos detalles de la ventana de una terminal en Windows Terminal. En primer lugar, mediante las opciones tabTitle o tabColor podemos establecer un título y un color de la pestaña de un tipo de terminal:

Opción Descripción
tabTitle Título de pestaña para las terminales de este tipo.
tabColor Código hexadecimal del color de la pestaña.
icon Ruta del icono de la pestaña de la terminal.
theme Activa el modo oscuro (dark) o el modo claro (light). Por defecto, system.

Si además queremos cambiar y personalizar el icono que aparece al lado del nombre de la pestaña, podemos hacerlo con la opción icon, donde deberemos indicar la ruta de una imagen. La opción theme por su parte, permite indicar un tema claro u oscuro para Windows Terminal, en caso de no indicarlo, tomará el que esté establecido en el sistema operativo.

Otras opciones interesantes que permiten personalizar detalles relacionados son las siguientes:

Opción Descripción
alwaysShowTabs Muestra todas las pestañas cuando sólo tienes una pestaña abierta.
showTabsInTitlebar Muestra u oculta la barra de título de Windows Terminal.
showTerminalTitleInTitlebar Muestra el título de la terminal activa en la barra de título.
alwaysOnTop Muestra siempre la ventana de Windows Terminal delante de las demás.
tabWidthMode Establece el ancho de las pestañas. Opciones: equal, titleLength, compact.
disableAnimations Desactiva las animaciones del panel de Windows Terminal.
confirmCloseAllTabs Muestra una ventana de confirmación al cerrar todas las pestañas.
padding Espacio de relleno entre textos y borde. Ver padding de CSS.
scrollbarState Establece la visibilidad de la barra de scroll: hidden o visible.

Imágenes de fondo

Es posible personalizar detalles como la transparencia de una terminal o una imagen de fondo en la ventana de la terminal con las siguientes propiedades:

Opción Descripción
useAcrylic Activa semitransparencia de la terminal cuando está en primer plano.
acrylicOpacity Valor entre 0 y 1 (con decimales) para indicar grado de transparencia.
backgroundImage Ruta de una imagen para utilizar de fondo en la terminal.
backgroundImageOpacity Valor entre 0 y 1 (con decimales) para indicar grado de transparencia.
backgroundImageAlignment Alineación de la imagen: center, left, top, right, bottom, topLeft, topRight, bottomLeft, bottomRight.
backgroundImageStretchMode Método de redimensión de imagen de fondo: none, fill, uniform, uniformToFill.

Ten en cuenta que en el caso de acrylicOpacity es necesario tener activada la opción useAcrylic, y lo mismo para las propiedades de backgroundImage, que necesitarán tener establecido una imagen de fondo para que funcionen.

Cursor de la terminal

Es posible personalizar el cursor de la terminal con las opciones cursorColor, cursorHeight o cursorShape. Las dos primeras permiten indicar el color y la altura del cursor, mientras que la última permite indicar la forma que tomará:

Opción Descripción
cursorColor Color para el cursor (sobreescribe el esquema de color en uso).
cursorHeight Alto del cursor. Un valor entre 25 y 100.
cursorShape Forma del cursor: bar, vintage, underscore, filledBox, emptyBox o doubleUnderscore.

La opción cursorShape nos permite elegir una de las siguientes opciones:

Windows Terminal: cursorShape

Atajos de teclado

Windows Terminal viene prácticamente sin ningún atajo de teclado. Sin embargo, en el apartado actions del fichero de configuración podremos establecer los atajos de teclado personalizados que necesitemos, adaptándolo a nuestro gusto.

El formato de cada atajo es tener una opción keys donde indicamos el atajo de teclado, mientras que la opción command indica el comando que realiza la acción. Veamos algunos ejemplos habituales:

"actions": [
  { "command": "copy", "keys": "ctrl+c" },
  { "command": "paste", "keys": "ctrl+v" },

  { "command": "find", "keys": "ctrl+f" },
  { "command": "closeWindow", "keys": "alt+f4" },
  { "command": "toggleFullscreen", "keys": "f11" },

  { "command": "newTab", "keys": "ctrl+t" },
  { "command": "closeTab", "keys": "ctrl+w" },
  { "command": "nextTab", "keys": "ctrl+right" },
  { "command": "prevTab", "keys": "ctrl+left" },

  { "command": { "action": "adjustFontSize", "delta": 1 }, "keys": "ctrl+numpad_plus" },
  { "command": { "action": "adjustFontSize", "delta": -1 }, "keys": "ctrl+numpad_minus" },
  { "command": { "action": "toggleRetroEffect" }, "keys": "ctrl+º" },
]

En los últimos atajos, la opción command es un poco más compleja, ya que a parte del comando (indicado en action) se le proporciona un parámetro delta, aportando más información.

Dividir paneles en Windows Terminal

En Windows Terminal es posible crear un atajo, por ejemplo CTRL+D, para dividir la terminal actual en dos subterminales. Nuevamente, si volvemos a pulsar CTRL+D volveremos a dividir la terminal actual, en dos subterminales.

Dividir paneles en Windows Terminal

Por otro lado, el atajo CTRL+W cerraría la terminal actual, permitiendo cerrar las terminales que hayamos creado, o realizando la misma tarea que closeTab si sólo hay una pestaña.

Para poder realizar estas acciones, solo tenemos que colocar estas acciones:

"actions": [
  { "command": "splitPane", "keys": "ctrl+d" },
  { "command": "closePane", "keys": "ctrl+w" }
]

Otras opciones

A continuación, algunas otras opciones que pueden resultarte interesantes:

Opción Descripción
antialiasingMode Modo de renderizado de texto: grayscale, cleartype o aliased.
altGrAliasing Activa o desactiva el uso de CTRL+ALT como alternativa a ALT GR.
snapOnInput Si está activado, hace scroll cuando estás escribiendo un comando.
historySize Indica el tamaño máximo de líneas que puede guardar el historial. Por defecto, 9001.
closeOnExit Indica si cierra la ventana al salir. Opciones: true, false, graceful, always o never.
bellStyle Indica el tipo de aviso de error de terminal. Opciones: visual, audible, all o none.
copyOnSelect Activa copiar selección automáticamente. Desactivado, necesita click derecho de ratón.
copyFormatting Activa el copiar formato y color, no sólo texto. Otras opciones: all, none, html y rtf.
wordDelimiters Permite indicar los carácteres que se usarán como delimitador al hacer doble clic.
snapToGridOnResize Redimensiona texto al carácter más cercano.
tabSwitcherMode Elige el modo de conmutar pestañas. Opciones: mru, inOrder, disabled.
largePasteWarning Activa (o desactiva) el aviso de que vas a pegar un fragmento muy grande de texto.
multiLinePasteWarning Activa (o desactiva) el aviso de que vas a pegar múltiples líneas del portapapeles.

Ten en cuenta que muchas de estas opciones pueden colocarse en profiles / defaults. De esta forma se aplicarán siempre por defecto a cualquier terminal que abramos.

¿Quién soy yo?

Soy Manz, vivo en Tenerife (España) y soy streamer partner en Twitch y profesor. Me apasiona el universo de la programación web, el diseño y desarrollo web y la tecnología en general. Aunque soy full-stack, mi pasión es el front-end, la terminal y crear cosas divertidas y locas.

Puedes encontrar más sobre mi en Manz.dev