AUMENTANDO LAS POSIBILIDADES CON ESPANSO

 


Cuando descubrís Espanso, tu forma de trabajar cambia. De repente, escribir textos repetitivos se convierte en cosa del pasado. Pero, ¿qué pasa cuando tu base de datos crece y necesitás gestionar cientos de entradas (como DNI y teléfonos) de forma masiva, y encima compartirlas entre tu notebook con Linux (Tuxedo OS/Wayland) y la PC de escritorio con Windows?

En este post te muestro cómo evolucionamos un sistema básico de expansión de texto a un motor automatizado multiplataforma usando un único archivo CSV, un toque de magia con awk y enlaces simbólicos.

 

Paso 1: La evolución de los datos (Estructurando el CSV)

 

Empezamos gestionando solo nombres y documentos. Pero la necesidad de la oficina nos llevó a agregar una capa más de complejidad: los números de teléfono.

En lugar de crear archivos separados, la solución más práctica fue mantener un único archivo fuente en OnlyOffice/Excel (colegas.csv) estructurado en tres columnas:

 

Fragmento de código
APELLIDO,DNI,TELEFONO
GOMEZ,30123456,3571555111
PEREZ,25789101,3516662222
ALVAREZ,40111222,

 

Tip de diseño: Si de algún contacto no tenés el teléfono (como en el tercer caso), la celda se deja vacía y el sistema la ignorará elegantemente.

Además, para mantener el orden visual, dejamos filas en blanco y abajo de todo sumamos a los encargados de entidades externas, de quienes solo necesitábamos el DNI (columnas A y B), demostrando que la base de datos puede crecer de manera organizada sin mezclar los roles.

 

Paso 2: El súper script de Bash y Awk (El cerebro en Linux)

 

Procesar más de 100 filas a mano en archivos de configuración YAML es inviable. Para eso delegamos el trabajo pesado a awk en Linux. Creamos un alias en el archivo .bashrc que hace todo esto en un solo viaje:

  1. Lee el archivo CSV.

  2. Limpia caracteres invisibles corruptos (ideales para evitar fallos de lectura).

  3. Convierte los nombres a minúsculas y elimina espacios para armar los disparadores.

  4. Reemplaza automáticamente las letras ñ por n en los disparadores para garantizar compatibilidad total bajo Wayland (ej. :munoz en lugar de :muñoz).

  5. Genera el disparador del DNI (ej: :gomez).

  6. Si existe un teléfono, genera un segundo disparador anteponiendo una "t" (ej: :tgomez para el teléfono).

  7. Ignora las líneas en blanco de separación.

  8. Guarda todo en la carpeta de Espanso, reinicia el servicio y genera una copia de respaldo en una carpeta local destinada a sincronizarse.

Este es el alias definitivo utilizado en Linux:

alias actualiza-espanso='echo "matches:" > ~/.config/espanso/match/base.yml && awk -F"," "{gsub(/[^[:print:]]/,\"\"); nombre=tolower(\$1); gsub(/ /,\"\",nombre); gsub(/ñ/,\"n\",nombre); if (nombre != \"\" && \$2 != \"\") {printf \"  - trigger: \\\":%s\\\"\\n    replace: \\\"%s\\\"\\n\", nombre, \$2}; if (nombre != \"\" && \$3 != \"\") {printf \"  - trigger: \\\":t%s\\\"\\n    replace: \\\"%s\\\"\\n\", nombre, \$3}}" /home/usuario/documentos/colegas.csv >> ~/.config/espanso/match/base.yml && espanso restart && mkdir -p /home/usuario/documentos/espanso/ && cp ~/.config/espanso/match/base.yml /home/usuario/documentos/espanso/base.yml'

 No te olvides de actualizar tu Bash:

source ~/.bashrc

 

Paso 3: Interoperabilidad (Llevando la magia a Windows vía Google Drive)

El verdadero desafío llegó al querer usar esta misma base de datos en una PC de escritorio con Windows, manteniendo los datos actualizados en tiempo real mediante Google Drive.

Para evitar lidiar con configuraciones manuales cada vez que se actualiza el CSV en Linux, recurrimos a una herramienta nativa de Windows: los Enlaces Simbólicos (Symlinks). Esto le permite a Espanso creer que está leyendo su archivo local de siempre, cuando en realidad apunta directo a la nube.

 

La solución en Windows:

  1. Sincronizar la carpeta de Google Drive en la PC de escritorio.

  2. Abrir el Símbolo del Sistema (CMD) como Administrador (crucial para tener privilegios de creación de enlaces).

  3. Eliminar el archivo por defecto de Espanso y crear el enlace apuntando a la unidad de Google Drive (asumiendo la letra X):

del "%AppData%\espanso\match\base.yml" 
mklink "%AppData%\espanso\match\base.yml" "X:\Mi unidad\espanso\base.yml"

 Donde X es la unidad donde se encuentra montada nueva cuenta de Google Drive

 

Conclusión: Un entorno de trabajo unificado

Gracias a este ecosistema, el flujo de trabajo es impecable:

  • Modificás o agregás un contacto en tu planilla de OnlyOffice.

  • Ejecutás actualiza-espanso en la terminal de Linux.

  • El script genera las expansiones de DNI, las de teléfono (anteponiendo la t), limpia las ñ problemáticas, salta los espacios en blanco y exporta el archivo base.yml.

  • Google Drive detecta el cambio, lo sube a la nube y la PC con Windows (gracias al enlace simbólico) se actualiza en segundos de forma automática.

¡Automatización eficiente, multiplataforma y lista para el trabajo pesado del día a día!

 

 

 

 

 

 

 

Automatización en el escritorio: Cómo instalar Espanso en Tuxedo OS (Wayland) y no morir en el intento


En mi búsqueda por optimizar las tareas administrativas, me encontré con una joya: Espanso. Es un expansor de texto que permite que, al escribir un alias (como :nombre), el sistema lo reemplace automáticamente por otro dato (como un DNI).

Sin embargo, usarlo en un entorno moderno como Tuxedo OS con Wayland tiene sus trucos. Aquí les comparto la hoja de ruta que me funcionó después de lidiar con dependencias y permisos.

 

1. Instalación del paquete correcto

 En sistemas modernos, es vital elegir la versión que corresponda a tu servidor gráfico. Como mi sistema usa Wayland, el paquete .deb tradicional de X11 me daba errores.

En sistemas modernos, es vital elegir la versión que corresponda a tu servidor gráfico. Como mi sistema usa Wayland, el paquete .deb tradicional de X11 me daba errores.

  1. Descargué del repositorio oficial el paquete específico: espanso-debian-wayland-amd64.deb.

  2. Lo instalé usando apt (aunque si los repositorios fallan, gdebi es un gran aliado).

     

 2. El desafío de los permisos (Wayland)

Wayland es más estricto con la seguridad. Para que Espanso pueda "leer" el teclado y reemplazar texto, tuve que hacer dos cosas fundamentales:

A. Dar permisos al grupo de entrada:

sudo usermod -aG input $USER

 

Importante: Después de esto, hay que reiniciar la sesión para que el sistema reconozca el nuevo permiso.

B. Instalar kdotool: En KDE Plasma, Espanso necesita esta herramienta para simular las pulsaciones de teclas:

sudo apt install kdotool

 

3. Configuración del teclado 

 Si Espanso no detecta automáticamente tu idioma, hay que decírselo en el archivo de configuración global:

nano ~/.config/espanso/config/default.yml

 

 Asegúrate de que contenga estas líneas:

keyboard_layout:  

  layout: es

 Mucho muy importante: antes de "layout" debe haber 2 espacios en blanco

 

4. El "Toque Maestro": Automatización con Awk 

Tengo una lista de 60 colegas en un archivo colegas.csv (Formato: Nombre, DNI). Escribir cada disparador a mano en el archivo de Espanso sería una locura. Así que diseñé un script de terminal que procesa el CSV y genera el archivo de configuración de Espanso al instante. El script debe lanzarse justo donde se encuentra el archivo CSV:

echo "matches:" > ~/.config/espanso/match/base.yml && awk -F',' '{gsub(/[^[:print:]]/,""); gsub(/ /,"",$1); printf "  - trigger: \":%s\"\n    replace: \"%s\"\n", tolower($1), $2}' colegas.csv >> ~/.config/espanso/match/base.yml

 

¿Qué hace este script?

  • Limpia caracteres invisibles que a veces deja Excel.

  • Elimina espacios en los nombres para que los alias sean de una sola palabra.

  • Convierte todo a minúsculas.

  • Genera el formato YAML que Espanso requiere. 

 

 5. Puesta en marcha

 Finalmente, para activar todo: 

espanso service register
 espanso service start

 

Si todo está bien, al escribir :espanso el sistema debería responderte con un "Hi there!". A partir de ahí, solo es cuestión de usar los nombres de mis colegas y ver cómo se transforman en sus documentos.

Un extra

Se puede crear un alias para hacer todo un script que haga toda la tarea:

entra a editar tu archivo de alias, en mi caso:

nano ~/.bash_aliases

 alias actualizar-dnis='echo "matches:" > ~/.config/espanso/match/base.yml && awk -F"," "{gsub(/[^[:print:]]/,\"\"); gsub(/ /,\"\",\$1); printf \"  - trigger: \\\":%s\\\"\\n    replace: \\\"%s\\\"\\n\", tolower(\$1), \$2}" ~/colegas.csv >> ~/.config/espanso/match/base.yml && espanso restart'

 Y con esto, lee nuestro archivo CSV, borra lo anterior, lo reescribe y reinicia espanso para que los cambios surtan efecto. Muy importante, actualizar los alias de bash:

source ~/.bash_aliases

¡Espero que esta guía les ahorre un par de dolores de cabeza y les abra la puerta a la automatización en Linux!