[`Terminator`](https://github.com/gnome-terminator/terminator) es un emulador de terminal, proyecto de gnome, que proporciona funcionalidades como dividir horizontalmente o verticalmente, se puede dar un título personalizado a cada terminal, estructura multigrid, ahorro de diseños, etc.
En la barra de título hay un botón que abre el menú de agrupación desde donde se puede controlar múltiples terminales simultáneamente. Esto significa que se escribirán al mismo tiempo. Es útil si quieres mandar un comando de actualización de la ventana, un `clear` o simplemente cerrarlas. Con la agrupación se activará el *broadcast group*, se puede desactivar (Broadcast off) o agrupar a todos los terminal aunque no sean del mismo grupo(Broadcast all).
[`ZSH`](https://www.zsh.org/) son las siglas de Z Shell, que es un programa de shell para sistemas operativos similares a Unix. ZSH es una versión extendida de Bourne Shell que incorpora algunas características de BASH, KSH, TSH, etc.
- **Completar la línea de comandos programable** 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.
- **Compartir el historial** entre todos los shells en funcionamiento.
- El **globbing de archivos extendido** permite la especificación de archivos sin necesidad de ejecutar un programa externo como `find`.
- **Mejora del manejo de variables y arrays**
- **Edición de comandos multilínea** en una sola memoria intermedia
- **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)
- **Varios modos de compatibilidad**, por ejemplo Zsh puede fingir ser una Bourne Shell cuando se ejecuta como `/bin/sh`
- Los **avisos temáticos**, incluyendo la capacidad de poner la información del aviso en el lado derecho de la pantalla y hacer que se oculte automáticamente cuando se teclea un comando largo
- **Módulos cargables**, que proporcionan entre otras cosas:
- Controles completos TCP y sockets de dominio Unix
- Un cliente FTP
- Funciones matemáticas ampliadas.
- El **comando `where` incorporado**. Funciona como el comando `which` pero muestra todas las ubicaciones en los directorios especificados en `$PATH` en lugar de sólo el que se utilizará.
- **Directorios nombrados.** Esto permite al usuario establecer atajos como `~mydir`, que luego se comportan de la manera `~` y `~user`.
También podemos configurar directamente en el fichero `${HOME}/.zshrc`. Por ejemplo, el mío es este: [zshrc](files/zshrc).
En el caso que se quiera volver a `bash`, tan solo debemos cambiar la shell predeterminada con el comando:
```shell
chsh -s $(which bash)
```
o
```shell
chsh -s /usr/bin/bash
```
O directamente desinstalar zsh 😢
```shell
sudo apt --purge remove zsh
chsh -s $(which "SHELL NAME")
```
# Oh my zsh!
[`Oh My Zsh`](https://github.com/ohmyzsh/ohmyzsh) es un framework de código abierto, impulsado por la comunidad para la gestión de su configuración de zsh. Las características principales son:
- El directorio de **plugins** que puedes ver en su [repositorio Git](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins) y en la [wiki](https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins).
- El directorio de **themes** con más de ciento cincuenta incluidos. La mayoría de ellos tienen [capturas de pantalla](https://github.com/ohmyzsh/ohmyzsh/wiki/Themes) en el wiki (¡Estamos trabajando en la actualización de esto!).
Para instalar `Oh My Zsh` se puede ejecutar con uno de los siguientes comandos.
En el archivo de configuración de zsh `.zshrc` tendremos que buscar la línea del tema, suele ser `ZSH_THEME="robbyrussell"`, y reemplazarlo por `ZSH_THEME="powerlevel10k/powerlevel10k"`.
Cualquier duda sobre la instalación y configuración del tema, la [documentación oficial](https://github.com/ohmyzsh/ohmyzsh/wiki/Installing-ZSH) es muy completa.
He empezado con este nuevo ambiente de trabajo a finales de octubre de 2022, el tiempo dirá si tengo los componentes más adecuados, pero desde luego tengo que destacar varios aspectos:
- La comunidades que respaldan cada unos de los elementos mencionados.
- Las posibilidades de gestión de terminales de terminator.
- La customización con los themes. De los colores, de las fuentes, de los tamaños, de las ubicaciones, etc
- El amplio abaníco de shortcuts personalizados de la terminal y de los plugins omz.