[gDesklets] Universal Applets Integration

I'm the lead developer of the Universal Applets project. Universal Applets
was originally a branch of the Screenlets project and after months of
frustration with the (lack of) leadership in the Screenlets project, we
recently forked Screenlets. Now that Universal Applets is getting up on it's
feet, I'd like to discuss cooperation between our projects.

One of the major changes that I made in Universal Applets from Screenlets
was the switch to an XEmbed based architecture. The new architecture allows
applets to be written in (almost) any language and to be embedded inside any
X application. With the new architecture, Universal Applets is split into
two components- servers and clients.

Servers: Servers are specialized applications that display clients (applets)
on the screen. Servers can be written in any language that has DBUS
bindings, using any gui toolkit that supports the XEmbed protocol. Clients
embed/display the applets by creating one GtkSocket (or the equivalent
widget in other toolkits) for every applet that they display.

Clients: Clients are normal applications that can also be written in any
language that supports DBUS using any toolkit that supports XEmbed. Instead
of placing their gui directly inside GtkWindows, clients wrap their gui
inside a GtkPlug. They then connect to a server via DBUS, and the server
displays and positions the applet on the screen by creating a GtkSocket and
embedding the client's GtkPlug.

At the moment, there's only one complete server called "Melange" which
displays applets on the screen in floating GtkWindows. The client<-->server
api is still unstable, and slightly cluttered. We're working on cleaning
that up as well as rewriting parts of
AWN<https://code.launchpad.net/%7Eawn-testing/awn/awn-ua>so that it
can function as a standardized applet server and can "dock"
applets. There are plans to add a server that shows applets in the Systray
and to rewrite the old and hacky SidebarScreenlet as a fully functional
applet server.

I'm not very familiar with the GDesklets codebase, but I suspect that it
would be possible to run GDesklets as clients with only minor changes to the
code. The core applet.py file in Universal Applets is only a few hundred
lines long, and I'm working on a major api cleanup that will make it even
simpler and shorter.

I know that both of our communities suffer from a shortage of developer
manpower. I believe that a new project with shared resources and improved
leadership will help solve that problem. Personally, I'm even open to a
complete merge of UA and GDesklets, but at the very least I'd like to aim
for compatibility between our projects.


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]