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!