GtkUnique 0.9.0 - Single Instance Application Library
Posted on: 11/08/2006 10:10 AM

GtkUnique 0.9.0 has been released:

Here's the initial beta release of GtkUnique, a library for creating single instance applications[1]. all back-ends are available and working:

* D-Bus [preferred]
* Xlibs
* Unix domain sockets

the IPC is completely hidden behind the API, so you don't have to care about it; the better encapsulation of the IPC code made possible to review the design and actually allow the subclassing of the GtkUniqueApp object[2]. so, now, you can implement your own application object as a subclass of GtkUniqueApp.

this is the list of changes since the last announcement:

Overview of changes from GtkUnique 0.1.0 to 0.9.0

* Initial beta release;
* Hide the implementation deeper, and finally allow subclassing
the GtkUniqueApp object; also, provide an example;
* Finish the libbacon-like, Unix socket based backend;
* Fixes and performance improvements in the Xlibs backend:
[thanks to Matthew Allum]
- Check every XGetWindowProperty() call with the GDK error
- Use the _NET_CLIENT_LIST property of the root window
to get the list of top-level windows, and use XQueryTree()
as a fallback;
- Sync the X server before removing the grab, to make sure that
the changes are applied;
- Add multi-head support;
- Add a selection lock when finding the right window to
avoid races;
* Documentation fixes:
- Add a per-backend documentation section;
- Add a spec prototype for the Xlibs backend protocol;
- Complete API documentation coverage;

some projects expressed the intention to use gtkunique as a external
dependency; as such, I decided to import it into GNOME CVS as the
gtkunique module[3] from my bzr repository[4]. if no major bugs are
found, I can make a 1.0.0 release to be blessed by the release team.

I understand that having (yet) another small library to depend upon is
not the optimal solution; importing the module via CVS might be a better
option, until a way to include GtkUnique inside GTK+ is found.

Printed from Linux Compatible (