Personalizar terminal con ZSH

Veremos cómo instalar zsh, Oh My ZSH y Powerlevel10k para personalizar la terminal.

Personalizar terminal con ZSH

Z shell (o simplemente ZSH) es un potente intérprete de comandos para sistemas operativos de tipo Unix, que incorpora características de otras shell, así como incluir propias, dentro de las cuales se encuentra agregar plugins que permiten ampliar sus capacidades y lo que me llamo la atención y el objetivo de este artículo es la personalización.

Aunque sí es cierto que ZSH brinda características interesantes como:

  • Completar la línea de comandos que puede ayudar al usuario a escribir tanto las opciones como los argumentos de la mayoría de los comandos utilizados, con soporte inmediato para varios cientos de comandos, así como personalizar comandos.
  • Compartir el historial entre todos los shells en funcionamiento.
  • Mejora del manejo de variables/arreglos.
  • Corrección ortográfica y relleno automático de los nombres de los comandos (y opcionalmente de los argumentos, que se asumen como nombres de archivo).
  • Módulos cargables que proporcionan, entre otras cosas: controles completos TCP y sockets de dominio Unix, un cliente FTP y funciones matemáticas ampliadas.
  • El comando where incorporado. Funciona como el comando which, pero muestra todas las ubicaciones en los directorios especificados en $PATH.

Entre muchas otras que no caen nada mal, aunque básicamente como lo dije al principio, lo quiero probar por personalizar un poco la terminal.

instalar ZSH

Para instalarlo, lo primero que hacemos es actualizar los repositorios con los comandos.

sudo apt update
sudo apt upgrade

Siempre es una buena práctica mantener el sistema operativo actualizado.

Para instalar ZSH usamos el comando:

sudo apt install zsh
Install zsh

Podemos verificar la instalación con el comando:

zsh --version
Versión zsh

Instalar Oh My ZSH.

Ahora usaremos Oh My ZSH que básicamente nos permite administrar las configuraciones de ZSH de una forma más fácil y, por supuesto, eso incluye la gestión de temas. Para instalar Oh My ZSH lo hacemos con el comando:

sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Lo primero que nos pregunta es si queremos hacer ZSH nuestra terminal por defecto.

OhMyZsh


Al darle que sí nos pide la contraseña del usuario y una vez la ingresemos, veremos el mensaje de que hemos cambiado correctamente a /usr/bin/zsh.

zsh

Con esto ya tenemos instalados zsh y Oh My zsh en nuestro sistema.

Powerlevel10k

Es un tema para ZSH que tiene énfasis en la velocidad y la flexibilidad, así que vamos a utilizar Oh My ZSH para usarlo, pero antes vamos a instalar la fuente recomendada que nos permite tener iconos en la terminal, la cual podemos descargar directamente con los siguientes botones.

O si prefieres hacerlo desde el repositorio oficial, desde aquí.

font

Una vez tengamos las fuentes en nuestro equipo, podemos abrirlas con el visor de fuentes predeterminado.

Open font

En este caso, usando el visor de fuentes, tenemos la opción de instalar al abrir la fuente.

Instalación de fuentes

En ocasiones el visualizador de fuentes se queda instalando, podemos cerrar y volver a abrir la fuente para comprobar que esté instalada.

installed font

Una vez instaladas todas las fuentes, nos dirigimos a las configuraciones o preferencias de la terminal.

Terminal preferences

Donde buscaremos el perfil y cambiaremos la fuente predeterminada por la fuente MesloLGS que es la recomendada.

Preferencias

cerramos las preferencias y podemos proseguir, e instalar Powerlevel10k con el comando:

git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

Una vez que termina tendremos que editar el archivo ~/.zshrc con un editor de texto, bien sea gráfico o por terminal. En este caso, usaré nano para editarlo desde la misma terminal usando el comando.

nano ~/.zshrc

Aquí buscaremos la liena ZSH_THEME="robbyrussell" y la remplazaos por:

ZSH_THEME="powerlevel10k/powerlevel10k"
Powerlever10k

Guardamos con control + o y cerramos con control + x ahora recargamos zsh con el comando:

source ~/.zshrc

Una vez ejecutamos el comando, se recarga la terminal y nos muestra la pantalla de configuración en la cual seguiremos paso a paso. Lo primero que nos pregunta es si vemos un diamante. Si lo vemos, presionamos la y y continuamos.

Configuración inicial.
🗒️
Nota: en caso de que no lo veas, es porque no configuraste la fuente "MesloLGS" en el perfil de la terminal.

Después nos preguntará si vemos un candado.

lock

Luego nos pregunta si vemos una flecha arriba.

Flecha arriba,

Luego nos preguntará si vemos los iconos cerca de las cruces.

Iconos.

Nos preguntará el estilo que le queremos dar al prompt.

Prompt style

Luego nos pregunta qué set de caracteres queremos usar.

Character Set

Luego nos pregunta si queremos ver la hora.

Show Current time

Nos preguntará por el tipo de separador del prompt.

Prompt separators

Luego nos pregunta por el tipo de cabecera que queremos en el prompt.

Prompt heads

Nos pregunta por las colas del prompt.

Promp tails

Luego nos pregunta por la altura del prompt.

Prompt height

Nos pregunta por el tipo de conexión del prompt.

Prompt Connection

Nos pregunta el tipo de marco del prompt.

Prompt frame

Luego el color de las conexiones y el marco.

Connections & frame color

El espacio del prompt

Prompt spacing

Nos pregunta si queremos iconos.

Icons

El flujo del prompt.

prompt flow

Habilitar el prompt transitorio.

transient prompt

Habilitar el instant prompt.

Instant prompt mode

Por último nos pregunta si queremos aplicar los cambios.

apply changes

Una vez aplicados los cambios, tendremos nuestra terminal personalizada.

Terminal

Por último, creo que es bueno recordar que tanto zsh, Oh My ZSH, y Powerlevel10k se pueden instalar en macOS, Windows, Linux, Android y hasta en ChromeOS.

¿Se puede volver a configurar?

Claro que sí, podemos volver a configurar o cambiar algún detalle de Powerlevel10k usando el comando:

p10k configure

Problemas con el teclado numérico

Bueno esto es muy poco común, me dio por hacer este proceso en uno de mis servidores que tiene Ubuntu server y noté que no me funcionaba el teclado numérico, desconozco si tenga algo que ver que sea mediante una conexión remota, pero para solucionarlo tuve que agregar las siguientes líneas al final en el archivo ~/zshrc y se solucionó el problema.

# Keypad
# 0 . Enter
bindkey -s "^[Op" "0"
bindkey -s "^[On" "."
bindkey -s "^[OM" "^M"
# 1 2 3
bindkey -s "^[Oq" "1"
bindkey -s "^[Or" "2"
bindkey -s "^[Os" "3"
# 4 5 6
bindkey -s "^[Ot" "4"
bindkey -s "^[Ou" "5"
bindkey -s "^[Ov" "6"
# 7 8 9
bindkey -s "^[Ow" "7"
bindkey -s "^[Ox" "8"
bindkey -s "^[Oy" "9"
# + -  * /
bindkey -s "^[OQ" "/"
bindkey -s "^[OR" "*"
bindkey -s "^[OS" "-"
bindkey -s "^[Ol" "+"
#END Keypad

Si en la remota casualidad de que te encuentres igual y tengas algún teclado diferente, puedes encontrar más información en el siguiente enlace.

Vídeo