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.
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:
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.
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.
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:
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
}
}
}
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.
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.
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 . |
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.
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 . |
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.
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 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.
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.
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" }
]
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.
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