Unity takes similar approach like Mac and displays application’s menu bar at the top of the screen. When you press alt
key the HUD comes up and you can search for commands from the appmenu.
There is a guide describing scopes development using Unity SDK in c++. To develop a scope you must implement at least search and preview methods.
Search returns results for a given query. The scope should be able to handle cancellation of the query as user types into the search box. The query can be en empty string and the scope should produce some meaningful default values like “most popular” or “recent items”. This is called the surfacing mode. It happens when user navigates to the scope but haven’t entered a query yet. It is importat to give some results back so that user is not confronted with a blank screen.
When the results are fetched the scope can decide how to show them using previews. There is a list of available widgets including widgets like audio, video, image, gallery, rating, etc. There are options how to present items in a category. Items can be for example presented in a grid, carousel, list, etc. The items can have various sizes and colors.
Finally the scope handles the activation when user selects and clicks a item.
Unity uses internally D-BUS for communication with scopes so it is possible to implement scopes in other languages. There is a guide for implementing scopes in Python using Singlet project. There is another very detailed guide, however it is bit outdated.