Writing an applet in languages other than C

The Panel Applet library comes with support for GObject Introspection. This makes it possible to write applets in the languages that have bindings based on GObject Introspection.

Here is a simple example of a python applet:

Example 4. Hello World applet, in Python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from gi.repository import Gtk
from gi.repository import PanelApplet

def applet_fill(applet):
    label = Gtk.Label("Hello World")
    applet.add(label)
    applet.show_all()

def applet_factory(applet, iid, data):
    if iid != "HelloWorldApplet":
       return False

    applet_fill(applet)

    return True

PanelApplet.Applet.factory_main("HelloWorldFactory",
                                PanelApplet.Applet.__gtype__,
                                applet_factory, None)



The only limitation of writing an applet in a language other than C is that the applet will not be able to run in the panel process: it will have to stay out-of-process. However, since it is recommended to leave applets out-of-process, this limitation is mitigated.