[kde-linux] "The name org.kde.kded was not provided by any .service files"

Kevin Krammer krammer at kde.org
Sat Aug 3 11:08:11 UTC 2013


On Saturday, 2013-08-03, James Tyrer wrote:
> On 08/02/2013 12:37 AM, Kevin Krammer wrote:
> > On Friday, 2013-08-02, Duncan wrote:

> >> Interesting, because as I said I have no such file here.
> > 
> > Nobody has.
> 
> Then the file is missing from the code.  OK.

It is not missing, kded is not a D-Bus activatable service.

> > D-Bus service files are for services that want to be D-Bus
> > activated, i.e. started by D-Bus if a message is sent to their well known
> > name.
> 
> I would say that the code needs to be canonically correct and complete.
>   If _any_code_ is capable of calling this file, then the file must exist.

Ah, a misunderstanding :)
D-Bus activation is not something that client applications use explicitly, it 
is a feature of the D-Bus daemon that service applications can use.

The way D-Bus works is that any application can send messages to any other 
application on the bus. If the recipient address does not exists, then the 
message can't be delivered and the sender gets an error.

However, before that happens, the D-Bus daemon will check if the recipient is 
perhaps an activatable service. By using the recipient address it generates a 
file name and checks for its existence. If the file exists, its content is 
used to attempt a start of the service. If that succeeds, the message is 
delivered.
If any step in this process fails, the sender gets the error.

Most D-Bus clients are not activatable services, i.e. messages sent to them 
when they are not running will result in an error in the message's sender, 
and, what we are seeing here, a log from the D-Bus daemon that it checked if 
it was for an activatable service and discovered it was not.

Whether or not it should log that every time is of course debatable.

> > This is very handy for on-demand services, since any application using
> > them doesn't have to care about whether it is running or not.
> > 
> > kded has been around for way longer than that, it is started by code in
> > KDE core libraries.
> 
> Yes, but has that been changed now that there is the new D-Bus system of
> starting it available?  If there is another way to start: "kded" that
> would appear to be an error or at least incorrect in the sense of not
> being correct -- that all starts of: "kded" by KDE should go through the
> same call (D-Bus).

If that had been changed there would be a D-Bus service file for the well know 
kded D-Bus name.  Since there isn't we can deduce that it has not been 
changed.
Most likely because D-Bus is not as readily available on other operating 
systems.

> In a KDE session that would happen as part of startkde's
> 
> > working.
> 
> Yes: "kdeinit" starts: "kded".  Actually: "startkde" runs:
> "start_kdeinit_wrapper".

Right.

> > I guess adding a D-Bus service file doesn't hurt for such cases that kded
> > went away unexpectantly.
> 
> Yes, that is the question here.  I thought that kdeinit was supposed to
> restart it if it wasn't running.  However, it might appear that we have
> reached that point that the code base has grown to the point that we
> don't know how it works since there are clearly D-Bus calls being made
> to start: "kded".

No. As explained above this is something the D-Bus daemon does on its own.

Cheers,
Kevin
-- 
Kevin Krammer, KDE developer, xdg-utils developer
KDE user support, developer mentoring
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 190 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kde-linux/attachments/20130803/9d5af3c8/attachment.sig>


More information about the kde-linux mailing list