Dans le navigateur de fichier Nautilus, j’ai très vite apprécié la possibilité d’écrire des scripts qui simplifient souvent les tâches courantes (tourner des images, renommer en fonction des données exif, convertir,…). Ces scripts sont accessibles dans le menu qui apparaît lors d’un clic droit sur un fichier, cette possibilité devient très vite indispensable. J’utilisais pas mal cette possibilité il y a quelques années et dernièrement j’ai remis le nez dans ces fameux nautilus-scripts.

J’ai re-téléchargé un ou deux packs de scripts car les miens avaient disparus suite à une mauvaise manipulation ou je ne sais quelle maladresse combinée à une sauvegarde défaillante. J’ai montré cette fonctionnalité à un de mes collègues. Il a trouvé cela génial. Mais étrangement les scripts que j’avais mis de côté ne fonctionnaient pas sur sa machine. J’ai pensé qu’il n’avait pas installé les dépendances (ce qui était en effet le cas) mais un problème peut en cacher un autre : les scripts en question utilisaient la variable $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS or il utilise Nemo, cette variable a été renommée $NEMO_SCRIPT_SELECTED_FILE_PATHS dans ce navigateur… J’ai trouvé cela très ennuyeux et c’est là que commence mon aventure.

Les scripts sont simples à écrire, quelques lignes suffisent mais en contrepartie, les scripts sont souvent assez peu bavards : s’il y a une erreur de dépendance, bien rien ne se passe ; si vous appliquez un script prévu pour un certain type de fichier, sur un autre, cela peu donner des résultats catastrophiques car de plus, certains scripts écrasent le/les fichier(s) source(s) ! Je me souviens d’un clic légèrement décalé par rapport à celui désiré qui avait détruit un de mes svg en appliquant une conversion prévue pour un jpg…

Du coup, j’ai créé mon dépôt de scripts sur github (je migrerais sûrement sur gitlab un jour), j’y dépose évidemment mes scripts mais surtout mes règles de structures. Mes scripts respectent donc les règles suivantes :

  • N’écrase jamais l’entrée !!!
  • Fonctionne aussi bien dans le prompt que dans n’importe quel navigateur de fichiers supportant les nautilus-scripts
  • Des notifications (en cas de problèmes de dépendances ou de type de fichiers invalide), on ne laisse pas l’utilisateur dans l’incompréhension en cas d’erreur !
  • Le type de fichier est déterminé par la commande file --mime-type -b "$input" | cut -d "/" -f2 (au besoin remplacer f2 par f1, supprimer le cut) jamais en déterminant les caractères après le dernier point ou pire les 3 derniers caractères du nom de fichier !
  • Tous les textes en anglais car les traductions sont difficiles à maintenir, le moins de texte possible.
  • Le nom du script contient des caractères utf-8 permettant de mieux comprendre le fonctionnement (ajouter ↶ ou ↷ pour un script de rotation permet de déterminer le sens c’est très pratique !)
  • Le nom du script contient des variables si le script est décliné en plusieurs version
  • Utilisation directe (pas de boite de dialogue)
  • Faciles à copier et à adapter (donc commenté, proprement indenté,…)

Je modifie régulièrement, au fur et à mesure de mes idées et des commentaires de contributeurs éventuels, les fonctions permettant d’obtenir ces résultats, tout est expliqué sur le dépôt.

Pour l’instant assez peu de scripts sont écrits mais une fois la structure bien en place le nombre de scripts devrait vite augmenter. Pour l’instant, sont disponibles :

  • installer des polices
  • concaténer / séparer les pages, tourner, compresser des pdf
  • redimensionner, recadrer automatiquement, convertir, tourner des images (90°, 180°, 270°, symétrie axiale)
  • renommer des photos à partir des données exif (date)
  • supprimer un fond blanc, ajouter un fond coloré à une image

Cela me permet de plus, d’apprendre à utiliser git, c’est tout bénef.