A quick update on my work for GNOME during GSoC. The initial work from Carlos has been split into a library handling the cloud provider management called libcloudproviders and a patch for GTK+ to add cloud providers to the GtkPlacesSidebar.
I did quite some refactoring of the code. One big change is that is now uses native DBus signals to react to changes of the cloud providers. That way each provider can notify individually about changes. It is now also possible for cloud providers to expose multiple synced directories (e.g. if a user has set up more that one accounts) to the API.
A cloud provider sync client needs to register a DBus name and implement org.freedesktop.DBus.ObjectManager. The ObjectManager will take care of announcing all individual accounts added to the bus. For every account an individual DBus object that implements our new org.freedesktop.CloudProvider1 interface is required. In case sync clients want to provide a menu with custom actions regarding to their sync client, they also need to implement org.gtk.Menus as well as org.gtk.Actions. For a example implementation on the the cloud provider side you can check out the test program.
At the moment the CloudProvider DBus interface supports 4 methods to provide information about the cloud provider accounts. That could of course still be extended to provide information about quota or sync progress. That will be done when the surrounding code is finished.
The next step is to wrap the cloud provider and object manager setup to a simple C API so that clients can make use of it without deep knowledge of gdbus as well as writing a small daemon that will take care about registering and managing cloud providers.
5 thoughts on “An update on cloud providers integration”
This is awesome. Nautilus has need this. Any chance of getting MegaSync integrated?
Integration will be up to the developers of the sync software. They need to implement the corresponding DBus interfaces. Just in case some might not do this, if there is an API to communicate with the sync client it is also possible to write some external script that takes care of integration.
A huge thankyou for your work Julius!
I’m not very familiar with DBus but I’m curious to know if what you’re working on will allow two way sync with file watching (similar to Dropbox’s linux client)?
I’ve been looking for a way to sync Google Drive this way for over 5 years :p
Would love to support you if you can driect me to a donate page 🙂
Just to keep things clear, this is not about integrating any sync mechanism in GNOME/nautilus, at least not for now. This is an API that allows sync clients to integrate with the file manager. So at the moment it still requires a native client taking care of syncing.
My work is already supported by the Google Summer of Code stiped. If you want to donate feel free to support the GNOME project directly.
Naming: perhaps you should call it FileCloudProvider if the interface only covers file sync?