In the last couple of weeks I have been working on completing the work started by the Red Hat guys on libgnomeservice. This is a system for system wide services installation and startup, so that admins can add services to be started for all users. It is also used to start the standard GNOME desktop services, like Nautilus, the panel, etc.
To test it, you need to get libgnomeservice from CVS, compile and install it, and apply all the *.patch patches to the corresponding CVS module. Then, to install additional services, you just need to put a *.service file in $datadir/dbus-1/services and a .desktop-service file in $datadir/gnome/desktop-services. There are two ways to install services. First one, the easiest one, is to use the gnome-service-launch program, which starts another process, wrapping the libgnomeservice API for that process. The second one, not yet used on any CVS module, is to use libgnomeservice API in the service. This is, of course, the best solution long term, since it would allow services, like Nautilus, to provide extra methods, and thus allow other applications to call those methods on the desktop service.
There are a couple of things missing, which I’m looking at at the moment. First is the D-BUS patch, which hasn’t been accepted upstream yet because of the test program failing, while for gnome-session, things are working pretty well. The second one, is a crash on gnome-session when you close the session, which needs to be fixed before anything of this goes to CVS.
Let’s hope this can be included for 2.12, so please, send your comments/suggestions/patches/etc