La mejor alternativa a TextExpander para Linux

Soy bastante fanático de la productividad y desde que escuche la existencia de TextExpander estoy buscando una alternativa que corra bajo Linux

– Lector: Pero Lucas, de que me estas hablando, que es esto de TextExpander.
– Yo: Imaginate que a diario tenes que redactar la misma respuesta una y otra vez. Ej: «Estimado cliente, hemos recibido su pedido, el mimo se esta procesando y en breve lo despacharemos. Recuerde que puede ver el estado de su pedido en https://…» ahora imaginate que tan solo escribiendo :pedido se genere todo este texto, bueno, eso es lo que hace TextExpander

Ahora que ya estamos en sintonía, debo aclarar que no he probado TextExpander y que solo lo conozco de comentario de usuarios y videos en Youtube. Además reconozco que la falta de una interfaz gráfica pude hacer que Espanso se vea poco amigable.

Multiplataforma

Un tema no menor es que Espanso esta desarrollado en Rust un lenguaje moderno y multiplataforma, por lo que si sos usuario de Windows o Mac, también es para vos.

Paquetes

Espanso viene con su propio sistema de paquetes que nos permite ampliar las funciones básicas del mimos y me encanta que sea el mismo ejecutable el que nos permite instalar dichos paquetes

$ espanso install basic-emojis
Updating package index...
Index updated!
basic-emojis successfully installed!

You need to restart espanso for changes to take effect, using:
  espanso restart
$ espanso restart
$ (:lol) > 😂

Matches

– Lector: Bueno Lucas muy lindo el emoji, pero como pongo mis textos personalizados

Empecemos por algo sencillo, solo vamos a ver como reemplazar :pedido por un texto personalizado. Para esto ejecutamos el comando espanso edit que nos abrirá nuestro editor favorito y agregamos las siguientes lineas.

  - trigger: ":pedido"
    replace: "Estimado cliente, hemos recibido su pedido, el mimo se esta procesando y en breve lo despacharemos, recuerde que puede ver el estado de su pedido en https://..."

Con esto ya seria más que interesante, pero esto no es todo, podemos usar fecha, hora y comandos personalizados. Vamos con un par de ejemplos más:

  - trigger: ":now"
    replace: "{{now}}"
    vars:
     - name: now
       type: date
       params:
        format: "%d/%m/%Y %H:%M:%S"

En este caso cuando escribamos :now nos devolverá la fecha y hora actual (07/04/2020 14:36:43). Ahora vamos con algo un poco más complejo

  - trigger: ":eth"
    replace: "{{eth}}"
    vars:
      - name: eth
        type: shell
        params:
          cmd: "echo $(curl -s https://api.bitfinex.com/v1/pubticker/ethusd | jq -j '.last_price')"

Este ultimo ejemplo nos reemplaza :eth por el precio actual en dólares del Ethereum (172.17) 👍

¿Bueno, ya te estas imaginando las cosas que se pueden hacer?