Espanso

Table des matières

Présentation

Espanso est un outil que j’ai découvert il y a quelques semaines et dont je ne pourrais plus me passer. En gros il permet de remplacer un mot-clé par une chaîne de caractères.

Voici quelques exemples : (Evidemment aucune des infos données en exemple ici, sont vrais, je vous vois les coquinous ! 😋)

Exemple

Pour mon usage, il me permet de coller simplement à partir d’une clé, des données un peu longue à écrire ou que je ne connais pas forcément par cœur comme par exemple mon Siret/Siren, mes adresses postales, mes emails.

Il permet également de coller la date du jour au format que vous voulez, ainsi que l’heure.

L’outil est vraiment puissant et me faire gagner du temps et de la fluidité dans mon quotidien.

Tout est paramétrable dans un fichier de configuration que nous verrons un peu plus loin et est multiplateforme.

Installation

Télécharger l’outil sur le site du développeur (oui c’est le projet perso d’une seule personne qui le met à disposition gratuitement de tous).

Sur MacOs vous pouvez tout simplement copier/coller la commande suivante dans un terminal :

➜  ~ brew install espanso

Une fois installé, en ligne de commande, on peut vérifier que Espanso est lancé :

➜  ~ espanso status
espanso is running

Configuration

On va maintenant pouvoir configurer nos petits snippets 🙂 Pour cela on va aller chercher l’endroit où sont les fichiers configurations avec la commande suivante :

➜  ~ espanso path
Config: /Users/victorprouff/Library/Application Support/espanso
Packages: /Users/victorprouff/Library/Application Support/espanso/match/packages
Runtime: /Users/victorprouff/Library/Caches/espanso

On ouvre le dossier configuration de l’application. J’utilise Visual Studio Code mais peu importe. Note Pad sous Windows marcherait très bien, un simple éditeur de texte suffit. Je tape la commande suivante pour ouvrir le dossier avec VSC : (Faites attention à “" entre Application et support sous mac)

➜  ~ code /Users/victorprouff/Library/Application\ Support/espanso

On obtient l’arborescence suivante :

$espanso/
├─── config/
│   ├── default.yml
├── match/
│   ├── base.yml
│   ├── ma_config.yml
│   └── example.yml

Dans le dossier match on peut soit modifier la configuration de base base.yml soit rajouter notre propre fichier de config.

Pour cela il suffit de respecter la syntaxe que nous allons voir ensemble.

Pour commencer, créez un fichier <mon-nom-de-fichier>.yml dans le dossier match. Il faut que le fichier commence par matches:.

1
2
3
4
matches:
  
  - trigger: "!poc"
    replace: "Prouff Of Concept"

Dans ce cas simple, Espanso va remplacer le trigger !poc par Prouff Of Concept.

Le trigger indique la clé de déclenchement. J’ai rajouté un ! qui permet d’éviter que la clé soit un mot que je pourrais utiliser dans une phrase lambda et que le snippet se déclenche. Ce n’est pas obligatoire et on peut mettre le caractère que l’on veut.

En général, j’ai pris l’habitude d’utiliser le trigger ! pour tout ce qui est professionnel, ? pour tout ce qui est personnel et enfin : pour les cas plus généraux.

On peut rajouter la gestion de date :

  - trigger: ":date"
    replace: "{{mydate}}"
    vars:
      - name: mydate
        type: date
        params:
          format: "%Y-%m-%d"

  - trigger: ":now"
    replace: "{{mytime}}"
    vars:
      - name: mytime
        type: date
        params:
          format: "%Hh%M"

Ici, la date est affichée en suivant le format %Y-%m-%d. Vous trouverez ici la liste des formats de date pour que vous puissiez créer celui qui correspond à votre besoin.

Voyons maintenant un cas un peu plus complexe est très puissant. J’utilise quotidiennement plusieurs adresses mails. Comme pour l’exemple vu plus haut, Espanso permet d’un trigger unique de choisir le mail que l’on veut coller.

  - trigger: ":mail"
    form: |
      [[choices]]
    form_fields:
      choices:
        type: choice
        values:
          - contact-pro@victorprouff.fr
          - mail2@victorprouff.fr
          - mail3@outlook.fr

Je vous remets le fichier de configuration complet pour l’exemple, n’hésitez pas à essayer, expérimenter et lisez la doc ! Elle est très bien faite et permet d’aller encore plus loin !

matches:
  
  - trigger: "!poc"
    replace: "Prouff Of Concept"

  - trigger: "!siret"
    replace: "157854669356542"
  
  - trigger: "!siren"
    replace: "157854669"

  - trigger: "!adr"
    replace: "15 Av Bollet, 75013 Paris"

  - trigger: ":adr"
    form: |
      [[choices]]
    form_fields:
      choices:
        type: choice
        values:
          - 15 Av Bollet, 75013 Paris
          - 14 Rue de bool, 17015 Tasseau
          - 27 allée du gray, 39685 Port-des-Saint

  - trigger: "!mail"
    replace: "contact-pro@victorprouff.fr"

  - trigger: ":mail"
    form: |
      [[choices]]
    form_fields:
      choices:
        type: choice
        values:
          - contact-pro@victorprouff.fr
          - mail2@victorprouff.fr
          - mail3@outlook.fr

  - trigger: ":date"
    replace: "{{mydate}}"
    vars:
      - name: mydate
        type: date
        params:
          format: "%Y-%m-%d"

  - trigger: ":now"
    replace: "{{mytime}}"
    vars:
      - name: mytime
        type: date
        params:
          format: "%Hh%M"

On peut également séparer en plusieurs fichiers yml pour par exemple partager un fichier commun pour votre équipe ou encore ranger les snippets pro d’un côté eux ceux perso de l’autre. Tous les fichiers .yml du dossier match qui respecte la structure seront interprétés.

Dans le dossier config, on peut spécifier des snippets spécifique pour une application précise. Je n’ai pas encore creusé cette partie-là. J’éditerai cet article pour compléter au fur et à mesure de mes découvertes.

/!\ ATTENTION ! /!\

N’enregistrez pas de donnée sensible comme des mots de passe ou des données bancaires dans ces fichiers ! Il n’y a aucun chiffrement de données et les infos que vous y laisserez pourraient être récupéré par un logiciel malveillant. Espanso est un outil puissant qui permet de gagner du temps et en fluidité mais en aucun cas il s’agit d’un logiciel sécurisé. Utilisez un gestionnaire de mot de passe pour ça 🙂 On en reparle bientôt d’ailleurs 😏