Intégration des services de stockage de fichiers en ligne
Carlos Soriano a récemment publié un billet de blog sur la situation actuelle des différents services de stockage de fichiers dans les nuages, tels que Dropbox, Google Drive ou encore OneDrive, ainsi que leur intégration dans les différents environnements de bureau.
Et les problèmes sont nombreux :
- Utilisation de code non libre par certains clients, ce qui ne permet pas de contrôler l’expérience utilisateur.
- L’expérience peut être différente en fonction du client, ce qui peut entraîner un flux de travail différent et une mauvaise intégration.
- Mauvaise intégration dû à la nécessité de posséder une API standard intégrée à l’environnement de bureau.
- Une prise en charge complète est difficile. Elle nécessiterait l’utilisation de GVFS pour la synchronisation, qui n’est pas encore disponible, quand chaque service utilise de toute façon sa propre méthode.
- Utilisation d’API spécifiques en fonction de l’environnement de bureau ou du gestionnaire de fichiers. Dropbox utilise par exemple nautilus-dropbox, qui ne fonctionne qu’avec Fichiers. Situation problématique pour les utilisateurs d’autres environnements de bureau ou de gestionnaire de fichiers. De plus, l’API pour les extensions de Fichiers est plutôt limitée.
- Le besoin d’utiliser des icônes personnalisées pour les menus.
À partir de là, comment faire en sorte de proposer une solution élégante qui puisse permettre aux différents services de s’intégrer proprement aux différents environnements de bureau, sans avoir besoin de s’adapter à chacun d’eux ?
La solution provient de la technologie agnostique D-Bus. Carlos Soriano a créé une nouvelle API pour D-Bus, puis a ajouté sa prise en charge dans GTK+.
Comme nous pouvons le constater, dans le panneau latéral nous avons bien le service MyCloud qui utilise sa propre icône, nom, statut, ainsi que la fourniture d’un menu personnalisé.
Comment ça fonctionne ?
Les services de cloud exposent l’API D-Bus, puis écoutent ses appels, agissant comme un serveur. En outre, les services de cloud implémentent la méthode D-Bus « CloudProviderUpdated », qui notifie à D-Bus que le service a mis à jour son statut, son icône, le chemin ou tout ce dont il a besoin.
Les fonctionnalités actuellement disponibles sont :
- GetIcon : récupère l’icône du service
- GetName : récupère le nom du service
- GetPath : récupère le dossier où le service stocke ses fichiers
- GetStatus : récupère l’état (inoccupé, synchronisation, erreur) du service
Et pour finir, nous pouvons exporter GMenuModel au travers de D-Bus pour la création de menus personnalisés.
L’autre point important, c’est que l’API D-Bus peut être étendue pour répondre à tous les besoins.
Bien que le travail soit toujours en cours et qu’il reste du chemin avant que ça ne puisse prétendre devenir une spécification Freedesktop, le fait que les différents services puissent, à terme, supporter la même norme implémentée par les différents environnements de bureau, laisse de grands espoirs de voir la situation s’améliorer enfin.
Et dans l’éventualité où la communauté devrait faire elle-même le travail, Carlos Soriano semble tout de même penser que la situation sera bien plus simple qu’auparavant.