During this latest round of arguing over the inclusion of Amazon search results in the Unity Dash, Alan Bell pointed out the fact that while the default scopes shipped in Ubuntu were made to check the new privacy settings, we didn’t do a very good job of telling third-party developers how to do it.
(Update: I was told a better way of doing this, be sure to read the bottom of the post before implementing it in your own code)
Since I am also a third-party lens developer, I decided to add it to my come of my own code and share how to do it with other lens/scope developers. It turns out, it’s remarkably easy to do.
Since the privacy setting is stored in DConf, which we can access via the Gio library, we need to include that in our GObject Introspection imports:
from gi.repository import GLib, Unity, Gio
Then, before performing a search, we need to fetch the Unity Lens settings:
lens_settings = Gio.Settings(‘com.canonical.Unity.Lenses’)
The key we are interested in is ‘remote-content-search’, and it can have one of two value, ‘all’ or ‘none’. Since my locoteams-scope performs only remote searches, by calling the API on http://loco.ubuntu.com, if the user has asked that no remote searches be made, this scope will return without doing anything.
And that’s it! That’s all you need to do in order to make your lens or scope follow the user’s privacy settings.
Now, before we get to the comments, I’d like to kindly point out that this post is about how to check the privacy setting in your lens or scope. It is not about whether or not we should be doing remote searches in the dash, or how you would rather the feature be implemented. If you want to pile on to those argument some more, there are dozens of open threads all over the internet where you can do that. Please don’t do it here.
I wasn’t aware, but there is a PreferencesManager class in Unity 6 (Ubuntu 12.10) that lets you access the same settings:
You should use this API instead of going directly to GSettings/DConf.