Activation: b-a-s problems.

Mikael Hallendal micke@imendio.com
Mon, 05 Jan 2004 17:51:34 +0100


mån 2004-01-05 klockan 14.41 skrev Michael Meeks:

> 	The examples lurk in bugzilla, and various cursings from users; it
> turns out that large chunks of technical non-English speaking people
> like to use odd things like LC_ALL=en_US.UTF-8 LC_CTYPE=de_DE.UTF-8 (or
> something) to get English UI, with German something else, and better
> they expect it to work per application.

Hmm .. I can see how this can be useful for your entire desktop but not
really why we need to support it for certain applications. 

> > Since the bus is per session (which is per display, right?) I don't see
> > this as a problem. Or am I missing something?
> 
> 	No idea; how is the 'per session' stuff implemented ? what if you
> ssh in from elsewhere ? or does it tunnel over the X connection ? if
> it tunnels over X - on which machine is the service started ? local or
> remote ?

Currently if you ssh somewhere you won't have a bus on the remote
machine. I guess it would make sense to have an environment variable
telling what D-BUS it should talk to.

The service is started on the machine where the bus is running. (As it
is now). I think it would make sense to copy environment (or parts of
it) from the client activating a service to the service being activated.

> > If you ask the bus for a service it checks if it is running (which would
> > be on the correct display since it has no idea about services running on
> > other displays). If it is not, it's started. 
> 
> 	I thought there were multiple busses with different scopes: 
> per-system, per-session, per-user, but perhaps I was mis-informed ?
> b-a-s was always per-machine/user so we saw these problems, in
> retrospect it would perhaps have been better to stick with the
> under-engineered X property on display rather than the horribly
> over-engineered b-a-s approach.

There would typically be two busses, system-bus and session-bus. So the
problem would be for login into a remote machine where you don't have a
session bus. Should it talk to your session bus on the machine your are
connecting from, and how should activation be handled (ie. the service
that an application from the remote machine might only be available on
that remote machine and not on the machine where the session is
running).

The other problem is the one Waldo mentioned, in a multi-screen per
session setup. This would partly be solved if the DISPLAY variable is
copied to the service from the activating client rather than from the
bus. One case that this won't handle is for example if you have an
application where you only have one instanse running but you want
windows to show on different displays (is that possible?) or do you have
to activate two instances. For example Epiphany (Web browser in GNOME)
only has one instance and just asks the running process to open another
window if it's already open. How will this work if you want the new
window on another display?

Another

Regards,
  Mikael Hallendal

-- 
Mikael Hallendal               micke@imendio.com
Imendio HB                     http://www.imendio.com
Phone: +46 (0)709 718 918