Personalizar terminal con ZSH
Veremos cómo instalar zsh, Oh My ZSH y Powerlevel10k para personalizar la terminal.
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 comandowhich
, 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
Podemos verificar la instalación con el comando:
zsh --version
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.
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
.
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í.
Una vez tengamos las fuentes en nuestro equipo, podemos abrirlas con el visor de fuentes predeterminado.
En este caso, usando el visor de fuentes, tenemos la opción de instalar al abrir la fuente.
En ocasiones el visualizador de fuentes se queda instalando, podemos cerrar y volver a abrir la fuente para comprobar que esté instalada.
Una vez instaladas todas las fuentes, nos dirigimos a las configuraciones o preferencias de la terminal.
Donde buscaremos el perfil y cambiaremos la fuente predeterminada por la fuente MesloLGS que es la recomendada.
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"
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.
Después nos preguntará si vemos un candado.
Luego nos pregunta si vemos una flecha arriba.
Luego nos preguntará si vemos los iconos cerca de las cruces.
Nos preguntará el estilo que le queremos dar al prompt.
Luego nos pregunta qué set de caracteres queremos usar.
Luego nos pregunta si queremos ver la hora.
Nos preguntará por el tipo de separador del prompt.
Luego nos pregunta por el tipo de cabecera que queremos en el prompt.
Nos pregunta por las colas del prompt.
Luego nos pregunta por la altura del prompt.
Nos pregunta por el tipo de conexión del prompt.
Nos pregunta el tipo de marco del prompt.
Luego el color de las conexiones y el marco.
El espacio del prompt
Nos pregunta si queremos iconos.
El flujo del prompt.
Habilitar el prompt transitorio.
Habilitar el instant prompt.
Por último nos pregunta si queremos aplicar los cambios.
Una vez aplicados los cambios, tendremos nuestra terminal personalizada.
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.