Cover Thumbnailer : après plus de 10 ans, c'est terminé ?

Je vous avais raconté il y a quelque temps l'histoire de Nautilus Terminal, et je vous avais dit à l'époque que je vous reparlerais un jour de mes autres vieux projets... Eh bien aujourd'hui on va sortir un nouveau cadavre du placard : Cover Thumbnailer ! 😊️

Pourquoi je vous en parle précisément maintenant ? Par ce que ça fait quelques semaines que je reçois des messages à son sujet via tous les canaux possibles et imaginables (Github, forums Ubuntu-fr, e-mail, MP Twitter,...).

Pourquoi ce soudain raffut autour d'un projet que je pensais oublié de tous ? Eh bien il semblerait qu'en fait des gens l'utilisaient encore et qu'il est tout cassé depuis Ubuntu 20.04 (et il n'était à priori déjà plus en grande forme depuis Ubuntu 18.10 en fait)...

Aujourd'hui, je vais donc vous raconter l'histoire de Cover Thumbnailer : le tout premier projet que j'ai publié sur les zinternets. On va voir comment tout a commencé, et qu'est-ce qui fait que ce projet a pris de l'ampleur. On parlera également de ce que j'envisage pour son avenir.

Logo de Cover Thumbnailer

Cover Thumbnailer ? C'est quoi ce machin encore ?

C'est vrai que je ne l'ai pas encore présenté... Donc c'est quoi Cover Thumbnailer ? À quoi ça sert ?

Cover Thumbnailer est un thumbnailer (si si!), c'est-à-dire un programme qui génère des vignettes, qui seront affichées dans un navigateur de fichier. Mais contrairement à la plupart des thumbnailers, il génère des vignettes pour les dossiers.

À l'origine conçu pour fonctionner avec Nautilus, le navigateur de fichier de GNOME, il fonctionne aujourd'hui également avec Thunar (XFCE), Caja (MATE) et Nemo (Cinnamon). Il est possible qu'il fonctionne avec encore d'autres navigateurs de fichiers, mais personne ne m'a prévenu. 😜️

Dans les dossiers de musique, il va afficher la pochette des albums rangés dans chaque dossier, dans les dossiers d'images, il va afficher un aperçu de ce qui se trouve dans le dossier, et il peut également gérer d'autres dossiers si on le souhaite.

Le tout fonctionne out of the box : il se débrouille pour détecter les dossiers de musique et d'images, et génère automatiquement les miniatures. Comme une image vaut mieux que de longs discours, je vous mets un aperçu de ce que ça donne :

Capture d'écran d'écran du dossier Music dans Nautilus

Aperçu dans un dossier de musique

Capture d'écran d'écran du dossier Pictures dans Nautilus

Aperçu dans un dossier d'image

Et malgré le fait qu'il puisse fonctionner sans aucune configuration de la part de l'utilisateur, Cover Thumbnailer est totalement personnalisable via une interface graphique assez complète :

Capture d'écran de l'interface de configuration de Cover Thumbnailer

Sur la capture l'interface est en anglais, mais en réalité elle est traduite en plein de langues !

Si Cover Thumbnailer vous intéresse et que vous souhaitez l'utiliser, je vous invite à visiter la page Github du projet, vous y trouverez toutes les infos nécessaires :

Maintenant que les présentations sont faites, entrons dans le vif du sujet : comment ce projet a-t-il commencé ?

Il était une fois, Jacky Tuning

Tout a commencé en février 2009, par un froid matin d'hiver (bon en fait j'en sais rien de s'il faisait froid ou pas, c'est pour rajouter un effet dramatique). À cette époque-là, j'utilisais MPD avec un client en ligne de commande pour écouter de la musique, et du coup je gérais ma bibliothèque musicale directement avec mon navigateur de fichier : Nautilus.

Comme je commençais à avoir pas mal d'albums, j'ai décidé de développer un petit script pour remplacer les icônes des dossiers par les couvertures des albums qu'ils contiennent. Il suffisait simplement de mettre des images nommées .cover.png ou .cover.jpg dans les dossiers, puis de lancer le script, et le tour était joué !

Pour vous donner un aperçu, ça ressemblait à ça à l'époque :

Capture d'écran du rendu de Cover Thumbnailer v0.0.1

Cette toute première version, numérotée v0.0.1, était écrite en Bash. Elle fonctionnait bien et répondait globalement à mes besoins... Elle faisait le taf quoi. L'histoire aurait pu s'arrêter là, mais en juillet 2009, j'ai publié une capture d'écran de mon bureau dans l'un des nombreux threads dans lesquels les gens partageaient leur bon goût, sous forme de captures d'écrans de leur bureau tunés, à base de wallpapers flashy, de thèmes GTK custom du meilleur effet, le tout avec pleins de néons multicolores qui clignotent (coucou Conky, je t'aimais bien moi aussi 😄️).

Je n'ai heureusement retrouvé aucune capture d'écran de cette époque pour vous faire saigner les yeux. Bande de veinards ! 😅️

Quoi qu'il en soit, l'œil affuté de l'un des participants à ce thread a très vite repéré les vignettes de mes albums de musique sur ma capture d'écran. C'est à partir de ce moment-là que tout le monde s'est mis à me réclamer une copie mon script. Je l'ai donc rendu public.

La première version en Bash a rapidement fait place à une version réécrite en Python (v0.1.0), un peu plus fiable et plus facile à faire évoluer. Une fois ceci fait, je lui ai ouvert son propre thread sur le forum Ubuntu-fr pour arrêter de polluer celui des captures d'écran.

Puis en fonction des retours, le programme a évolué et les versions se sont succédé rapidement.

La version v0.2.0 a ainsi inauguré un changement esthétique : les albums sont à présent représentés sous forme de boîtier de CD :

Capture d'écran du rendu de Cover Thumbnailer v0.2.0

Un peu plus tard, la version v0.4.0 ajoutera un fichier de configuration pour permettre au programme de s'adapter à plus de cas :

[MUSIC]
#Ajout de ce dossier comme dossier de musique
path = "/media/DATA/Music"

[IGNORED]
#Ignore les fichiers cachés
dotted = yes

Puis les versions suivantes ont rajouté le support des dossiers d'image, et le nombre d'options de personnalisation a grimpé en flèche. Afin de faciliter la vie de tout le monde, la version v0.6.0 ajouta une interface graphique pour tout configurer en quelques clics :

Capture d'écran de l'outil de configuration de Cover Thumbnailer v0.6.0

Désolé pour l'image réduite, c'est la seule capture d'époque que j'ai réussi à retrouver...

C'est également cette version qui a inauguré le PPA (un dépôt de logiciel), permettant une installation et des mises à jour simplifiées sous Ubuntu.

La dernière version importante fut la v0.8.0, sortie en juillet 2010, rapidement suivie de 2 versions apportant des correctifs. Cette version apportait une personnalisation assez poussée, notamment pour les dossiers de musique.

Capture d'écran de l'outil de configuration de Cover Thumbnailer v0.8.0beta

Version beta de l'outil de configuration de Cover Thumbnailer v0.8

Ensuite j'ai commencé à bosser sur une version v0.9... mais on en reparlera plus tard... 😅️

Pour finir, fin 2011 est sorti GNOME 3, avec Nautilus 3.x qui a changé la manière dont il gérait les thumbnailer, passant d'une solution maison, à une gestion standardisée des miniatures proposée par Freedesktop. La version v0.8.3 est donc sortie à ce moment-là, pour que Cover Thumbnailer puisse fonctionner avec les dernières versions de Nautilus.

D'un petit script vite-fait pour répondre à un besoin perso, Cover Thumbnailer est devenu un programme assez complet et très personnalisable qui a rencontré un certain succès à l'époque : pas mal de blogs en ont parlé et en parlent encore, et l'interface de configuration a été traduite dans plus d'une trentaine de langues !

Et après ? Heu... Bah... Plus rien... 😓️

Cover Thumbnailer v0.9 : la version fantôme

Comme je l'ai mentionné, j'avais commencé à bosser sur une v0.9 peu de temps après la v0.8. Cette version était très (trop?) ambitieuse.

Elle prévoyait un gestionnaire de thèmes, pour permettre une personnalisation encore plus poussée (et puis le thème par défaut ne faisait pas l'unanimité). J'ai retrouvé une capture d'écran d'une version en cours de développement de cette fonctionnalité :

Capture d'écran du gestionnaire de thème prévu pour Cover Thumbnailer v0.9

D'ailleurs, en parlant de thèmes, quelqu'un avait commencé à bosser sur des design bien plus travaillés que ceux que j'avais pu produire jusque là (bah ouais, je suis développeur, pas graphiste 😜️) :

Nouveau thème prévu pour Cover Thumbnailer v0.9

Une prise en charge des dossiers vidéos était également prévue, avec une pochette façon boîte de DVD :

Pochette de DVD qui aurait dû apparaître dans Cover Thumbnailer v0.9

Cette version v0.9 n'a finalement jamais vu le jour. Que s'est-il passé ? J'en sais trop rien. Cette version était probablement trop ambitieuse, j'ai surement perdu ma motivation à bosser sur ce projet... Et puis j'étais encore lycéen à cette époque-là... il faut croire que j'avais mieux à faire. 😅️

2020 : Ça marche pû ! 😢️

J'avais donc abandonné ce projet depuis fin 2011, et je pensais que les gens l'avaient oublié depuis. Mais quand Ubuntu 20.04 est sorti, j'ai commencé à recevoir des messages à son sujet (et j'en reçois de plus en plus au fur et à mesure que les gens migrent depuis la précédente LTS).

J'ai donc été assez surpris d'apprendre que pas mal de gens utilisaient encore Cover Thumbnailer. Et j'ai été encore plus surpris d'apprendre qu'il y avait même plein de nouveaux utilisateurs. Depuis 2018, Thunar, le gestionnaire de fichiers du bureau XFCE, supporte (enfin!) l'affichage de miniatures sur les dossiers, et du coup pas mal d'utilisateurs de ce navigateur ont commencé à utiliser Cover Thumbnailer. 😮️

Bien évidemment, si tout le monde a commencé à vouloir me contacter, ce n'était pas pour m'envoyer des photos de chatons mignons (snif!), mais tout simplement parce que Cover Thumbnailer ne fonctionnait plus. 😓️

Photo de chaton mignon

Du coup, je mets moi-même une photo de chaton vu que personne ne veut m'en envoyer 😝️

Pour être précis, il est probable que Cover Thumbnailer ne fonctionnait déjà plus avec Nautilus depuis Ubuntu 18.10 (alors que c'est à partir de cette version que ça a dû commencer à fonctionner avec Thunar). Et si je n'ai pas eu tant de message que ça plus tôt, c'est probablement parce qu'une grande part des utilisateurs étaient restés sur Ubuntu 18.04, la précédente LTS.

Que s'est-il passé à ce moment-là pour que Cover Thumbnailer ne fonctionne plus ? La réponse est assez simple : Nautilus a commencé à sandboxer les thumbnailers pour améliorer la sécurité. Du fait de son fonctionnement assez atypique pour un thumbnailer, Cover Thumbnailer ne pouvait plus fonctionner correctement : il n'avait plus accès au véritable chemin du dossier (ce qui est nécessaire pour savoir s'il faut l'afficher comme un album de musique ou un dossier d'image), ni à son fichier de configuration (c'est ballot).

À cela s'est ajouté l'abandon du support de Python 2 dans Ubuntu 20.04 (l'interpréteur Python 2.7 est toujours là, mais la plupart des bibliothèques pour Python 2 ont été supprimées). Et comme les problèmes, ça vole en escadrille, la bibliothèque PyGTK, qui était utilisée pour l'interface graphique de l'outil de configuration, a également été supprimée.

Donc si on résume :

  • Python 2 n'est plus supporté : il faut passer à Python 3.
  • PyGTK, fournissant le support de GTK 2 en Python n'est plus supporté non plus : il faut passer à GObject Introspection et à GTK 3.
  • Et il n'est plus possible de générer les miniatures automatiquement avec Nautilus à moins de trouver une solution pour contourner la sandbox...

Très sincèrement, à ce moment-là j'avais décidé d'abandonner... Ça représentait trop de travail pour quelques utilisateurs et puis... on va pas se mentir, le code du logiciel est assez dégueulasse... Heureusement que j'ai progressé en 10 ans ! 😑️

Mais les messages continuant à affluer, j'ai fini par me décider à réparer le logiciel au mieux, ou en tout cas d'essayer... Ça coûte rien d'y jeter un coup d'œil, non ?

J'ai donc passé le projet de Python 2 à Python 3, sans problème notable en dehors de problèmes de division d'entiers... Cool, voyons la suite !

Maintenant, il faut voir si on peut passer l'interface en GTK 3... J'ai donc ouvert, sans grande conviction, le fichier XML contenant l'interface graphique dans Glade (l'outil pour éditer des interfaces en GTK). Je ne m'attendais même pas à ce qu'il me l'ouvre puisqu'il ne supporte plus GTK 2, mais au final, après m'avoir râlé dessus, il a accepté de l'importer ! J'avoue que j'étais sur le cul, bravo aux développeurs de ce magnifique outil ! 😮️

Alors forcément il y a du rouge partout parce que l'interface de Cover Thumbnailer est remplie de Widgets obsolètes, et il y a quelques pétouilles d'affichage par-ci par-là (notamment des éléments affichés à l'horizontale alors qu'ils devraient être à la verticale), mais rien d'insurmontable, j'ai pu tout réparer assez rapidement.

Capture d'écran de Glade

Édition de l'interface de Cover Thumbnailer dans Glade avant correction des problèmes d'agencement

Une fois les deux premiers soucis réglés, il restait à voir ce qu'il était possible de faire pour ce problème de génération de miniature avec Nautilus... Au final j'ai décidé qu'il serait trop long d'essayer de contourner la sandbox, et j'ai donc laissé tomber. À la place, j'ai ajouté un bouton dans l'interface pour générer manuellement les miniatures. C'est moins cool que si c'était automatique, mais au moins ça marche.

Capture d'écran du bouton permettant de générer les vignettes manuellement

Bouton permettant de générer manuellement les miniatures

Donc si on résume. À présent, Cover Thumbnailer

  • fonctionne parfaitement avec Thunar, le navigateur de fichier de XFCE,
  • il fonctionne également normalement avec Caja, le fork de Nautilus 2.x utilisé par l'environnement MATE,
  • et avec Nemo, le fork de Nautilus 3.4 utilisé par l'environnement Cinnamon.
  • Par contre il ne fonctionne qu'en mode manuel avec Nautilus.

C'est pas si mal au final. 😄️

J'ai donc sorti il y a quelques jours Cover Thumbnailer v0.10.0 qui le rend de nouveau utilisable avec les distributions récentes. Espérons que ça tienne encore une nouvelle décennie comme ça. 😛️

Et après ?

La question que tout le monde se pose maintenant, c'est « Que va-t-il advenir de Cover Thumbnailer ? ».

Bah, heu... rien. Je n'ai plus le temps ni la motivation nécessaire pour continuer à bosser sur ce projet. Mais je ne vais pas totalement l'abandonner pour autant : aussi longtemps que ça sera possible, je continuerais à corriger les problèmes qui l'empêcheront de fonctionner, mais il ne faudra par contre pas compter sur de nouvelles fonctionnalités. Ce projet passe donc officiellement en mode « maintenance » (bon en réalité c'était le cas depuis des années, mais là, au moins, c'est officiel !).

Il n'y a donc plus aucun espoir de voir de nouvelles fonctionnalités apparaître dans Cover Thumbnailer ? Eh bien pas tout à fait... Si quelqu'un est motivé pour reprendre le projet, il lui sera tout à fait possible de rajouter de nouvelles fonctionnalités. Donc si vous êtes intéressés par ce projet et que vous souhaitez en devenir le nouveau maintainer, n'hésitez pas à me contacter ! 😋️

Quoi qu'il en soit, je suis assez content de m'être replongé dans Cover Thumbnailer. J'ai pu me rendre compte du chemin que j'ai parcouru en 10 ans, et ça fait plaisir de voir que des utilisateurs ont continué à se servir de ce logiciel pendant tout ce temps ! 😊️