The Ubuntu dash and scopes architecture
One of Unity‘s main features is the Dash. The Dash allows the user to quickly search for information both locally (installed applications, recent files, bookmarks, etc) and remotely (Twitter, Google Drive, etc).
The Dash achieves this by having one or more Scopes that are responsible for providing one category of search results. The user may search for content either through the Scopes scope in the Dash or through the Scope’s own page.
Finding and launching scopes
Scopes can be local or remote. Local scopes run on the device and remote scopes run on the Scopes Server. For Ubuntu 14.04 only local scope submission is supported, but remote scope creation and submission will be added in subsequent releases.
The central part of the scopes’s lifecycle is the local scope registry, which is a process that maintains a list of all local and remote scopes (the list of remote scopes is sent to the local registry from the Scopes Server at request). Once that list is available, all scopes are equal to the client.
The scope registry starts scopes on demand and runs them only when required, so that only the required scopes will be run as a result of a query.
Scopes data flow
- The search engine itself, talking to a web service or a local database. Its visible representation is a Dash page.
- Standalone scope
- A scope that presents a single set of results and queries one single source
- Aggregating scope
- A scope that acts as a container for multiple standalone scopes. Every scope can be an aggregating scope, which enable richer content on their Dash pages
- Dash page
- The visible part of the scope: dash pages present the scope’s search interface and its results. Dash pages can be marked as favourites, so that they are always pinned in the Dash.
Got a question? Ask!
If you’ve got any question about Ubuntu on mobile devices or developing apps for the phone, our experts are here to help. Ask Ubuntu is a free, community-driven Q&A site for Ubuntu users and developers.