Easy tutorial to create Unity Lens? [duplicate]

I'd like to create a custom scope that searches and returns results from an online source for personal use.

Is this possible? And if so, how?


For development in python:

Update for 12.04:

Unity lens development with singlet has been integrated into quickly:

quickly create unity-lens <lens-name>

For 11.10:

You might want to look at a very nice wrapper class developed by Michael Hall called singlet: https://launchpad.net/singlet

A simple hello world lens would look like this:

#! /usr/bin/python
from singlet.lens import SingleScopeLens, IconViewCategory
from singlet.utils import run_lens

class HelloWorldLens(SingleScopeLens):
    class Meta:
        name = 'helloworld'

    cat1 = IconViewCategory("Cat One", "stock_yet")

    def search(self, phrase, results):
        results.append('http://google.com/search?q=%s' % phrase,
                             'file',
                             self.cat1,
                             "text/html",
                             phrase, phrase, '')
if __name__ == "__main__":
    import sys
    run_lens(HelloLens, sys.argv)

Which is a lot simpler and faster to write than the original library versions.


Yes it is absolutely possible and really easy to create new scopes. The Ubuntu App Developer site has lots of content to get you started writing scopes:

  • Scopes overview
  • Tutorial: Writing a scope
  • Scopes cookbook

The Ubuntu Wiki has a tutorial on how to write a Lens that uses Vala. Saravanan Thirumuruganathan wrote one for Python. The Unity Sample Place has some simple example lenses written in python and Vala.

As far as I know it's not (yet?) possible to write lenses in PHP.


There are a bunch of tutorials in the Ubuntu Lens wiki. The easiest I think is one I found on a blog here.

Here is the wiki.