Personalización de la Terminal en Linux
En este artículo veremos cómo personalizar una terminal en linux, específicamente en aquellas distribuciones basadas en Debian como Parrot Security. y en Arch como Manjaro. Sin tanto preámbulo, empecemos.
Cualquier error que presente, lo puede dejar en la sección de comentarios.
Tipografía como requisito
Descarga
Para poder tener una compatibilidad completa con Powerlevel10K necesitamos un tipo de letra monoespaciado, en este caso usaremos la última versión de Hack Nerd Font.
1
2
3
4
5
6
# Descargamos desde el repositorio oficial
curl -LO https://github.com/ryanoasis/nerd-fonts/releases/latest/download/Hack.zip
# Desempaquetamos los .ttf
mkdir hack-nerd-font
unzip Hack.zip -d hack-nerd-font
rm Hack.zip
Instalación
Ahora que tenemos descargada la fuente, procedemos a instalarla. Una forma sencilla es dar doble click sobre cada archivo y luego seleccionar instalar, pero si queremos complicarnos la vida, podemos hacer lo siguiente.
Usamos un directorio en /usr/share/fonts/
que almacene las TrueType Font (TTF), este directorio varía de acuerdo al sistema operativo.
1
2
3
4
# Debian
sudo mv hack-nerd-font/ /usr/share/fonts/truetype/
# Arch
sudo mv hack-nerd-font/ /usr/share/fonts/TTF/
Ahora necesitamos actualizar con fc-cache
nuestra caché de fuentes, le damos los argumentos de -f
y -v
para forzar la actualización y ver más a detalle la ejecución. Finalmente con fc-list
nos aseguramos de que se ha instalado correctamente nuestra fuente.
1
2
3
sudo fc-cache -f -v
# Filtramos la lista por "hack"
fc-list | grep "hack"
Zsh como nuestra nueva shell
Instalación
Para poder personalizar al máximo nuestra terminal, dejaremos de usar nuestra bash tradicional para pasarnos a zsh, por consiguiente necesitaremos instalarla si no la tenemos.
1
2
3
4
5
6
7
8
9
# Verificamos si ya la tenemos instalada
zsh --version
# Si no la tenemos, procedemos con la instalación
## Debian
sudo apt update
sudo apt install zsh
## Arch
sudo pacman -Sy
sudo pacman -S zsh
Configuración
Para tener un historial de nuestros comandos ejecutados, crearemos estos archivos de configuración para nuestra nueva shell.
1
2
3
4
# Si ya existe ~/.zshrc, le hacemos una copia
mv ~/.zshrc ~/.zshrc.old
# Creamos los archivos
touch ~/.zshrc ~/.zsh_history
Ahora agregaremos las configuraciones que deseamos al archivo de configuración de la zsh, mediante algún editor de texto como nano
o vi
.
1
2
3
HISTSIZE=1000
SAVEHIST=1000
HISTFILE=~/.zsh_history
Kitty como nueva terminal
Instalación
La terminal que voy a usar es Kitty, la cual tiene muchas opciones que nos permitirá personalizarla a nuestro gusto. Lastimosamente en Arch, a la fecha de actualización de esta publicación, no funciona correctamente esta terminal, así que tendremos que usar otra que queramos.
1
2
# Debian
sudo apt install kitty
Por el momento no vamos abrir esta nueva terminal.
Configuración
Con la terminal instalada, ahora podemos configurar algunos detalles de la misma, para mayor información se puede revisar la documentación. Lo que primero haremos ahora es crear el archivo de configuración o modificar las preferencias de la terminal que estemos usando en Arch, lo que más interesa es el tipo de fuente que vamos a usar.
1
2
3
4
# Creamos el directorio de configuración de kitty si no existe
mkdir ~/.config/kitty
# Ahora el archivo
touch ~/.config/kitty/kitty.conf
Con el archivo ya creado, lo que tendremos que hacer ahora es editarlo con las configuraciones que deseemos, a continuación dejo un ejemplo detallado.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# Deshabilitamos el sonidito de la campana
enable_audio_bell no
# Establecemos la tipografía que vamos a usar
font_family Hack Nerd Font
font_size 14
url_color #61afef
# Personalizamos los atajos del teclado
## Movimientos entre ventanas (ctr + alguna flechita)
map ctrl+left neighboring_window left
map ctrl+right neighboring_window right
map ctrl+up neighboring_window up
map ctrl+down neighboring_window down
## Suspender trabajo
map ctrl+shift+z toggle_layout stack
## Crear una nueva ventana o pestaña con el directorio actual
map ctrl+shift+enter new_window_with_cwd
map ctrl+shift+t new_tab_with_cwd
# Estilo del cursor
cursor_shape beam
cursor_beam_thickness 1.8
# Comportamiento del ratón
mouse_hide_wait 3.0
detect_urls yes
# Entrada por teclado
repaint_delay 10
input_delay 3
sync_to_monitor yes
# Estilo de las pestañas
tab_bar_style powerline
inactive_tab_background #e06c75
active_tab_background #98c379
inactive_tab_foreground #000000
# Estilo de la terminal
background_opacity 0.85
window_padding_width 4
# Nuestra shell por defecto
shell zsh
PowerLevel10K
Instalación
Ahora que tenemos nuestra terminal configurada y la fuente requerida, procedemos a instalar Powerlevel10k.
Fuente: github.com/romkatv/powerlevel10k
1
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~/.powerlevel10k
La ubicación del repositorio estará en
~/.powerlevel10k
Configuración
Para este caso, ya tengo predefinidas algunas configuraciones estéticas para nuestra nueva shell, para establecerlas necesitaremos descargar un archivo.
1
wget https://raw.githubusercontent.com/meyer-pidiache/dotfiles/main/.p10k.zsh -O ~/.p10k.zsh
Ahora debemos modificar el archivo de configuración de nuestra zsh.
1
2
3
4
5
6
7
8
9
10
11
# Esta parte debe estar en el inicio del archivo
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
fi
# [...]
# Enlazamos nuestra Powerlevel10k al final
source ~/.powerlevel10k/powerlevel10k.zsh-theme
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
Extensiones
Instalación
Para tener más funcionalidades, podemos instalar las siguientes extensiones (plugins) que nos darán un toque especial a nuestra zsh.
- zsh-syntax-highlighting. Los colores le dan vida a una terminal, y esta extensión hará su trabajo.
1 2 3 4
# Debian sudo apt install zsh-syntax-highlighting # Arch sudo pacman -S zsh-syntax-highlighting
- zsh-autosuggestions. Si usamos comandos muy largos, podemos ahorrar tiempo con esta extensión.
1 2 3 4
# Debian sudo apt install zsh-autosuggestions # Arch sudo pacman -S zsh-autosuggestions
- sudo.plugin. Si queremos ejecutar un comando con sudo, solo tendremos que presionar doble vez la tecla de escape.
1 2 3 4
# La etiqueta -p es para crear el directorio 'plugins' que no existe en Debian sudo mkdir -p /usr/share/zsh/plugins/zsh-sudo/ # Descargamos el plugin sudo wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/plugins/sudo/sudo.plugin.zsh -P /usr/share/zsh/plugins/zsh-sudo/
Configuración
Ahora estas extensiones ya están en nuestro sistema, pero tenemos que enlazarlas con nuestra zsh, para ello necesitamos conocer la ubicación donde están alojadas, en el caso de Debian las reubicaremos para una mejor organización.
1
2
sudo mv /usr/share/zsh-syntax-highlighting /usr/share/zsh/plugins/
sudo mv /usr/share/zsh-autosuggestions /usr/share/zsh/plugins/
En Arch por defecto, ya está organizado.
Con lo anterior hecho, agregaremos las ubicaciones de las extensiones a nuestro arhivo de configuración de la zsh.
1
2
3
4
5
6
7
# [...]
source /usr/share/zsh/plugins/zsh-sudo/sudo.plugin.zsh
source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
# [...]
Herramientas
Si no nos parece suficiente con las extensiones y queremos más, podemos instalar herramientas que nos serán de gran utilidad.
Instalación
- Batcat Este programa nos permite visualizar archivos de manera más amigable, es un reemplazo mejorado de
cat
.1 2 3 4
# Debian sudo apt install bat # Arch sudo pacman -S bat
- FZF. Nos permite buscar archivos y nuestro historial de una manera más dinámica con CTRL+T y CTRL+R. Para habilitar estos atajos, debemos fijarnos en el archivo de configuración que dejaré más abajo.
1 2 3 4
# Debian sudo apt install fzf # Arch sudo pacman -S fzf
- LSD. Es la versión mejorada de
ls
.1 2 3 4
# Debian sudo apt install lsd # Arch sudo pacman -S lsd
- NVIM. Es la versión mejorada de
vim
, y para usarla en conjunto con NvChad, necesitamos la versión 0.9.4 o superior. A continuación descargamos la última versión y la instalamos.1 2 3 4 5 6 7 8
# Debian curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux64.tar.gz sudo rm -rf /opt/nvim sudo tar -C /opt -xzf nvim-linux64.tar.gz export PATH="$PATH:/opt/nvim-linux64/bin" rm nvim-linux64.tar.gz # Arch sudo pacman -S neovim
- NvChad. Nos brinda una configuración para
nvim
que es alucinante. Para instalarle plugins a NvChad necesitaremos tenernpm
instalado.1 2 3 4 5 6
# Debian sudo apt install npm # Arch sudo pacman -S npm # Descarga e instalación de NvChad git clone https://github.com/NvChad/NvChad ~/.config/nvim --depth 1 && nvim
Al primer mensaje que nos aparece, seleccionamos “y” para la configuración por defecto, luego esperamos y ya podremos instalar lo que queramos a NvChad. Instalación de NvChad
Si no hemos presionado la tecla de escape, se nos mostrará un mensaje exitoso, pero si la hemos presionado, podemos esperar un momento a que se instalen los plugins y salir con
!q
.
Configuración
Ahora que tenemos nuevas herramientas, configurémoslas y creemos algunos alias.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# [...]
# Descomenta para Debian
## export PATH="$PATH:/opt/nvim-linux64/bin"
# alias cat='batcat' # Descomenta para Debian
# alias cat='bat' # Descomenta para Arch
alias icat='kitty +kitten icat' # Para mostrar imágenes por consola, se necesita Image Magick
alias vim='nvim'
# lsd
alias l='lsd --group-dirs=first'
alias la='lsd -a --group-dirs=first'
alias ll='lsd -lh --group-dirs=first'
alias lla='lsd -lha --group-dirs=first'
alias ls='lsd --group-dirs=first'
# Esta función nos ayudará a previsualizar archivos. 'search' desde la terminal para usarla.
function search(){
if [ "$1" = "h" ]; then
fzf -m --reverse --preview-window down:20 --preview '[[ $(file --mime {}) =~ binary ]] &&
echo {} is a binary file ||
(batcat --style=numbers --color=always {} ||
highlight -O ansi -l {} ||
coderay {} ||
rougify {} ||
cat {}) 2> /dev/null | head -500'
else
fzf -m --preview '[[ $(file --mime {}) =~ binary ]] &&
echo {} is a binary file ||
(batcat --style=numbers --color=always {} ||
highlight -O ansi -l {} ||
coderay {} ||
rougify {} ||
cat {}) 2> /dev/null | head -500'
fi
}
# Atajos
## Avanzar (alt+right)
bindkey "^[[1;3C" forward-word
## Retroceder (alt+left)
bindkey "^[[1;3D" backward-word
## Eliminar bloque adelante (alt+supr)
bindkey "^[[3;3~" delete-word
# FZF
## Descomenta para Debian
### source /usr/share/doc/fzf/examples/key-bindings.zsh
### source /usr/share/doc/fzf/examples/completion.zsh
## Descomenta para Arch
### source /usr/share/fzf/key-bindings.zsh
### source /usr/share/fzf/completion.zsh
# [...]
Último paso
Finalmente, y cruzando los dedos, cerramos nuestra terminal actual y abrimos nuestra Kitty si estamos en Debian. Si estamos usando otra terminal, tendremos que cambiar la shell por defecto de nuestro usuario y reiniciar el sistema.
1
2
3
4
# Solo en Arch
chsh -s /bin/zsh
# Para gestionar la terminal podemos usar Tmux
sudo pacman -S tmux
Ya en nuestra terminal personalizada, si queremos cambiar el diseño actual solo debemos ejecutar el siguiente comando.
1
p10k configure
Pero si queremos un nivel más avanzado de personalización, podemos editar el siguiente archivo de configuración.
1
vim ~/.p10k.zsh
Eso es todo, ya tenemos una terminal con superpoderes… Pero no con IA.
Pequeño regalo
Si queremos integrar un asistente de código a nuestro nvim, podemos instalar un plugin llamado Codeium. Para su instalación y configuración, tengo en este sitio web un artículo sobre ello.
Comments powered by Disqus.