Detect new available names in bus
Sergio Costas <[email protected]>
| Newsgroups | gmane.comp.freedesktop.dbus |
|---|---|
| Message-ID | <[email protected]> |
Hi all: I want to detect if the user has installed a service that offers the well-known name "org.gnome.ArchiveManager1" (usually it is offered by file-roller). I can do a call to "NameHasOwner()" and it will return TRUE if that name is registered, even if the service is not active (because it is launched on demand), or FALSE if it isn't available (because the package "file-roller" isn't installed). But I haven't been able to detect when that name becomes available unless the service is launched. There seems to be no signal just for the act of "registering" a service that offers a well-known name (this is: if the package isn't installed and I install it, DBus should detect that there is a new file at "/usr/share/dbus-1/services/" called "org.gnome.ArchiveManager1.service", and notify that the service is available on-demand). I tried connecting to 'NameOwnerChanged' but it only notifies when the well-known name is acquired by the program, which means that it must be launched to detect it. But since it is an on-demand service, it is only launched if a program does a call to an interface on the well-known name. I also tried with 'NameAcquired' and 'NameLost', but I receive nothing (if I understand correctly the documentation, they seems to be emitted only to the service itself, but not to others). Also tried with 'PropertiesChanged', but nothing is emitted when the file gets installed. Is there a way of detecting this via events? I don't want to do neither a periodic polling, nor manually monitoring all the folders where service files can be added. Thanks!