La utilidad exa nos permitirá listar de una forma más visual y colorida los archivos del sistema, esta actuará como reemplazo del conocido comando ls.
Para que exa muestre los iconos de los ficheros debemos instalar fuentes compatibles, algunas de ellas son las nerd-fonts y las powerline-fonts:
Elegimos alguna fuente de la lista:
https://github.com/ryanoasis/nerd-fonts
https://github.com/powerline/fonts
Dejo un script para probar de forma sencilla todas las fuentes modificando el fichero Xresources, tan solo debemos tener en cuenta que las 3 últimas lÃneas del fichero Xresources deben ser una lÃnea en blanco y dos con la configuración de la tipografÃa. Para pasar a la siguiente configuración presionaremos Ctrl+d.
#!/usr/local/bin/bash
clear
IFS=$'\n'
total=$(fc-list | grep -e nerd-fonts -e powerline-fonts|wc -l|awk '{print$1}')
counter=1
for font_style in $(fc-list | grep -e nerd-fonts -e powerline-fonts | awk -F ":" '{print$2":"$3}'); do
echo =========== Testing font: $counter/$total ===========
let counter=$counter+1
echo FONT_STYLE: $font_style
fonts=$(echo $font_style|awk -F ":" '{print$1}')
#echo FONTS: $fonts
styles=$(echo $font_style|awk -F ":style=" '{print$2}')
#echo STYLES: $styles
for font in $(echo $fonts | tr "," "\n"); do
#echo FONT: $font
style_counter=0
for style in $(echo $styles | tr "," "\n"); do
#echo STYLE: $style
N=$(wc -l .Xresources|awk '{print$1}')
let N=$N-3
if [ $style_counter -eq 0 ]; then
# WITHOUT STYLE:
let style_counter=$style_counter+1
head -n $N ~/.Xresources > /tmp/.Xresources
echo ----------------------------
echo $font
echo "" >> /tmp/.Xresources
echo "URxvt.font: xft:$font:pixelsize=14:antialias=true" >> /tmp/.Xresources
echo "URxvt.boldFont: xft:$font:pixelsize=14:antialias=true:style=bold" >> /tmp/.Xresources
mv /tmp/.Xresources ~/.Xresources
xrdb .Xresources
urxvt -e bash -i -c "ls -la;bash"
fi
# WITH EACH STYLE:
head -n $N ~/.Xresources > /tmp/.Xresources
echo ----------------------------
echo $font - $style
echo "" >> /tmp/.Xresources
echo "URxvt.font: xft:$font:pixelsize=14:antialias=true:style=$style" >> /tmp/.Xresources
echo "URxvt.boldFont: xft:$font:pixelsize=14:antialias=true:style=bold" >> /tmp/.Xresources
mv /tmp/.Xresources ~/.Xresources
xrdb .Xresources
urxvt -e bash -i -c "ls -la;bash"
done
done
done
Mis fuentes preferidas son:
FiraCode Nerd Font Mono
FuraCode Nerd Font Mono
VictorMono Nerd Font Mono
CaskaydiaCove Nerd Font Mono
mononoki Nerd Font Mono
Inconsolata Nerd Font Mono
LiterationMono Nerd Font Mono
FantasqueSansMono Nerd Font Mono
BitstreamVeraSansMono Nerd Font Mono
Cousine Nerd Font Mono
JetBrainsMono Nerd Font Mono
NotoMono Nerd Font Mono
BlexMono Nerd Font Mono
MesloLGS Nerd Font Mono
Hasklug Nerd Font Mono
DroidSansMono Nerd Font Mono
InconsolataLGC Nerd Font Mono
DejaVuSansMono Nerd Font Mono
Hack Nerd Font Mono
CodeNewRoman Nerd Font Mono
agave Nerd Font Mono
GoMono Nerd Font Mono
InconsolataGo Nerd Font Mono
SauceCodePro Nerd Font Mono
MesloLGSDZ Nerd Font Mono
JetBrainsMonoMedium Nerd Font Mono
AurulentSansMono Nerd Font Mono
Anonymice Nerd Font Mono
Por otro lado si queremos fuentes un poco mas raras podemos probar con las siguientes:
VictorMono Nerd Font Mono - Italic
Monofurbold Nerd Font Mono
Iosevka - Oblique
Mediante este sencillo script podemos probar tan solo un grupo reducido:
#!/usr/local/bin/bash
clear
IFS=$'\n'
for font in $(<fonts.txt); do
N=$(wc -l .Xresources|awk '{print$1}')
let N=$N-3
head -n $N ~/.Xresources > /tmp/.Xresources
echo ----------------------------
echo FONT: $font
echo "" >> /tmp/.Xresources
echo "URxvt.font: xft:$font:pixelsize=14:antialias=true" >> /tmp/.Xresources
echo "URxvt.boldFont: xft:$font:pixelsize=14:antialias=true:style=bold" >> /tmp/.Xresources
mv /tmp/.Xresources ~/.Xresources
xrdb .Xresources
urxvt -e bash -i -c "ls -la;bash"
done
Modificamos nuestro fichero de configuración Xresources para que utilice las fuentes correctas:
URxvt.font: xft: FiraCode Nerd Font Mono:pixelsize=14:antialias=true:style=Regular
URxvt.boldFont: xft: FiraCode Nerd Font Mono:pixelsize=14:antialias=true:style=bold
Definimos que colores queremos utilizar siguiendo la documentación de exa:
https://the.exa.website/docs/colour-themes
Además definimos un alias para sustituir ls por exa:
export EXA_COLORS="\
da=38;5;245:\
di=38;5;14:\
sn=38;5;28:\
sb=38;5;28:\
uu=38;5;40:\
un=38;5;160:\
gu=38;5;40:\
gn=38:5:160:\
bl=38;5;220:\
ur=37:\
uw=37:\
ux=37:\
ue=37:\
gr=37:\
gw=37:\
gx=37:\
tr=37:\
tw=37:\
tx=37:\
su=37:\
sf=37:\
xa=37"
alias ls='exa --icons'
Ahora en otro terminal ejecutamos un ls y veremos el siguiente resultado: