Catégories
e-business

Créer le lien markdown d’un fichier local sur Mac

… ou, comment ajouter à votre ordi des petites fonctionnalités bien pratiques au quotidien pour éviter plein de clics, avec l’aide de ChatGPT…

Depuis plus de 15 ans, j’utilise intensivement 🐘 Evernote comme cerveau auxiliaire. Pour plein de raisons, toutes liées au mépris de cette ex-belle startup pour ses clients et utilisateurs, je commence à me désengager. Pas facile de quitter des habitudes bien rôdées.

Je teste donc un autre outil de prise de notes multimédia versatile : Obsidian. Mais là n’est pas l’objet de ce billet.

Obsidian formate le contenu des notes dans un standard ouvert de mise en forme : le Markdown1. L’avantage est que chaque note est un (vrai) fichier texte, stocké sur votre ordi (ou votre cloud pour la sauvegarde et la synchronisation), mais surtout au contraire d’un format propriétaire, le Markdown peut être lu et édité par plein de logiciels, un simple éditeur de texte et même Word (pourquoi on ferait ça ?)… Ce qui rend vos notes très portables : quand je voudrai quitter Obsidian, je n’aurai qu’à trouver n’importe laquelle des applications qui lisent du Markdown pour accéder à mes notes. L’intérêt des formats dits « ouverts ».

Pas besoin d’une formation au Markdown pour utiliser Obsidian

Obsidian est très fort pour lier les notes entre-elles, et mettre à jour les liens si une note est déplacée ou renommée.

Mon besoin

En revanche, je n’ai pas trouvé de fonctions native pour insérer dans une note le lien vers un dossier ou un fichier local, de mon disque, qui ne soit pas géré dans Obsidian. Par exemple le lien direct vers le répertoire d’un projet relatif à un groupe de notes (to-do listes, compte-rendus, ébauches de documents…)

Parce que j’aime bricoler depuis longtemps, j’ai trouvé une façon manuelle de procéder. Spoiler: c’est pas simple. Pour les gourmands, je détaille ça en fin de billet2

L’objectif

Ce que je voudrais pouvoir faire c’est tout simplement :

  • dans le Finder, clic droit sur le dossier ou fichier dont je veux le lien
    • menu contextuel Services (ou Actions rapides)
      • choisir « créer un lien markdown »
  • dans ma note Obsidian, Cmd-C ou Édition-Coller
    • Apparition d’un lien au format markdown

Exemple de résultat attendu pour un lien vers le dossier « Dossier MOE Camp de Gurs » :

[Dossier MOE Camp de Gurs](<file:///Users/fxb/Library/CloudStorage/GoogleDrive-fxb@fxbodin.com/Meu Drive/Documents/BXF Projets/Études et devis/Dossier MOE Camp de Gurs>)

Parce que que la syntaxe d’un lien Markdown c’est
[Nom du fichier](adresse du fichier)

Une fois de plus, j’ai sollicité mon nouvel ami, ChatGPT, celui de Tous développeurs avec ChatGPT ?

Mon prompt

(après quelques itérations, j’avoue) :

Role:
I need you to act as a software developer skilled in MacOS Finder.

My needs:
What I need is to set up a MacOS Finder Service that, when activated (ctrl+click on the item, clic in the list of services) on a File or on a Folder, stores in the clipboard a string in the markdown form of:
[name_of_the_file_or_the_folder](<file://local_URL_of_the_file_or_the_folder>)
The Service would ne named "Copy for Obsidian"

To be considered:
the name_of_the_file_or_the_folder uses french caracters and possibly emojis;
TAKE CARE of the special characters for Mac French, and emoji;
the local_URL_of_the_file_or_the_folder must be in the exact same format and encoding that the name_of_the_file_or_the_folder, hence enclosed in `< `and `>`.

Examples of desired output:
[café Brun 7/11 Afterwork FrenchTech 8€50.JPG](<file:///Users/fxb/Library/CloudStorage/GoogleDrive-fxb@fxbodin.com/Meu\ Drive/Documents/Bx\ France\ SARL/Administratif/Exercice\ 2023/justificatifs/café\ Brun\ 7\:11\ Afterwork\ FrenchTech\ 8€50.JPG>)

What do I have to do to get there?

J’obtiens une marche à suivre qui s’appuie sur le logiciel Automator, fourni avec MacOS. ChatGPT me donne un script, et la procédure détaillée pour créer un Service comme demandé. Je vous laisse essayer vous même.

Le résultat

Bon, ça ne marche pas parfaitement du premier coup. Je suis particulièrement contrarié par la mauvaise prise en compte de l’encodage des caractères spéciaux et des espaces dans l’adresse. Mais à force de coups de fouet caresses, ChatGPT trouve la bonne méthode.

Le script dans Automator

Ah, je vous ai déjà dit que je n’y connais rien en AppleScript ni en Shell, ni en système MacOS ?

N’empèche que voilà mon système enrichi d’une fonctionnalité bien pratique au quotidien.

Résultat : un lien vers mon répertoire, dans la note Obsidian

  1. Pour découvrir le format Makdown, ses usages, les logiciels et plate-formes qui l’utilisent : fiche Wikipédia 

  2. Comment générer manuellement un lien Markdown vers un fichier local :

    • ouvrir le Terminal (je sais, là j’ai déjà perdu 90% des lecteurs ; tenez-bon)
    • ouvrir le répertoire Finder du dossier ou fichier dont on veut le lien local
    • sélectionner le dossier ou fichier, copier son nom
    • aller maintenant dans la note Obsidian à l’endroit voulu, coller le nom
    • re-sélectionner le dossier ou fichier et le glisser dans la fenêtre de Terminal : son adresse locale apparaît (c’est moche)
    • sélectionner toute l’adresse et copier
    • retourner dans la note, sélectionner le nom du fichier et créer un lien (Menu Insérer > Lien Markdown) et coller comme adresse ce que vous venez de récupérer dans le Terminal
    • c’est fini (ouf) ah… non
    • parce que quand je disais « c’est moche » c’est qu’il y a des caractères spéciaux, des accents, des espaces… le lien ne va pas marcher : il faut l’enfermer entre < et >
    • c’est fini : vous avez dans la note le titre du dossier ou du fichier et si vous cliquez dessus, il va s’ouvrir.

    Simple, non ? Non. À vous dégoûter plutôt. On est d’accord.