Re: org.gnome.Application DBus Interface
- From: Alex Jones <alex weej com>
- To: desktop-devel-list gnome org
- Subject: Re: org.gnome.Application DBus Interface
- Date: Mon, 13 Aug 2007 21:01:05 +0100
(It seems some of my mail is going missing. This will screw up the
threading but whatever.)
Rodrigo Moya wrote:
> On Fri, 2007-08-10 at 17:45 +0100, Alex Jones wrote:
> > Hi list
> >
> > the org.gnome.Application DBus interface provides a way for
> applications
> > to expose common application functionality in a standardised way.
> >
> sounds pretty good... it would indeed be very useful to start using
> this
> for apps to export actions, so, what about adding a:
>
> InvokeAction (action_name, arguments)
>
> method? That way, we could use this interface for calling actions (not
> based on (complicated) URIs) on the app. Rhythmbox could just have
> several actions, like Play/Pause/Volume up-down/etc
>
> That would be very useful (as we tried to do on the CORBA days) for
> automation
Actually what is a better solution here is to use a different interface,
such as the common media player interface described here:
<http://wiki.xmms2.xmms.se/index.php/Media_Player_Interfaces>. That way,
making Rhythmbox "pause" becomes a case of calling
(org.gnome.MediaPlayer).Pause() rather than
(org.gnome.Application).InvokeAction("Pause")
> > Issues to be worked on:
> >
> > 1. Startup notification
> >
> can't this be done on gnome-application-exec? It can just do the
> startup
> notification for the duration of the Launch call
Right, this is exactly what I want to do (use the Launch call as the
startup procedure). Eventually though, clients won't be using
gnome-application-exec -- it is simply a backwards compatibility thing
for now. Panel and Nautilus will be invoking the DBus methods directly,
and it is for this use case that we need to find a way to support
startup notification. I personally feel that we can tidy up the
situation eventually (we're using a weird X IPC mechanism (su-n) to
supplement the DBus IPC mechanism...?), but that's for another day.
> > 2. Multiple screen scenarios
> > 3. Actions on multiple URIs
> > 4. GObject API to wrap the DBus API
> >
> what do you mean here? Are the dbus-glib bindings not enough?
Even with Python DBus, it is still nicer to do:
app = org_gnome_Application("org.gnome.Rhythmbox", "/org/gnome/Rhythmbox/Shell")
app.invoke_uri_action("Play", "file:///home/alex/Desktop/tune.ogg")
than
bus = dbus.SessionBus()
obj = bus.get_object("org.gnome.Rhythmbox", "/org/gnome/Rhythmbox/Shell")
app = dbus.Interface(obj, "org.gnome.Application")
app.InvokeURIAction("Play", "file:///home/alex/Desktop/tune.ogg")
But that's up to you. :)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]