Re: vlc mpris

2017-02-13 Thread Jamie Strandboge
On Mon, 2017-02-13 at 15:30 +0800, James Henstridge wrote:
> On 13 February 2017 at 15:02, Vasilisc  wrote:
> > 
> > How to allow vlc - "org.mpris.MediaPlayer2.vlc.instance*" ???
> > 
> > [0xd5f358] dbus interface error: Error requesting service name
> > org.mpris.MediaPlayer2.vlc.instance3045: Connection ":1.69" is not allowed
> > to own the service "org.mpris.MediaPlayer2.vlc.instance3045" due to AppArmor
> > policy
> > 
> > --
> > I don't see interfaces dbus|mpris
> > 
> > # LANG=C apt policy snapd
> > snapd:
> >   Installed: 2.21
> >   Candidate: 2.21
> >   Version table:
> >  *** 2.21 500
> > 500 http://fi.archive.ubuntu.com/ubuntu xenial-updates/main amd64
> > Packages
> > 100 /var/lib/dpkg/status
> >  2.0.2 500
> > 500 http://fi.archive.ubuntu.com/ubuntu xenial/main amd64 Packages
> > 
> > # snap interfaces | grep -E "(dbus|mpris)"
> > #
> You should be able to do this by adding a slot to your snap using the
> "mpris" interface.  Something like this:
> 
> slots:
>   mpris:
> interface: mpris
> name: vlc
> 
> Then make sure the app inside your snap uses this slot.
> 
> This interface looks like it will work okay for the mpris provider,
> and okay for unconfined mpris clients on classic systems.

Correct

> It's not
> clear how you'd write a confined client that could act as a remote for
> all installed players without defining many duplicate plugs.  If
> you're only interested in use on classic systems though, this should
> be good enough though.

It works kind of like the dbus interface but is a bit simpler. It is documented
here:
https://github.com/snapcore/snapd/wiki/Interfaces#mpris


Specifically if the providing snap has:

name: vlc
apps:
  vlc:
    slots: [mpris]

then vlc is allowed to bind to the DBus well-known name
'org.mpris.MediaPlayer2.vlc'. Plugging snaps do:

name: foo-vlc-controller
apps:
  foo-vlc-controller:
    plugs: [ mpris ]

then can be connected with:
$ sudo snap connect foo-vlc-controller:mpris vlc:mpris


The interface has some flexibility for when you want to use something different
than the snap's name in the DBus well-known name. Eg, if the providing snap has:

name: forked-vlc
slots:
  mpris:
    interface: mpris # this line not needed since iface name == slot ref
    name: vlc

then forked-vlc is allowed to bind to the DBus well-known name
'org.mpris.MediaPlayer2.vlc'. Plugging snaps do:

name: foo-vlc-controller
apps:
  foo-vlc-controller:
    plugs: [ mpris ]

Then on install they can be connected with:
$ sudo snap connect foo-vlc-controller:mpris forked-vlc:mpris


Notice that foo-vlc-controller doesn't care about what is on the other end 
(vlc, vs forked-vlc vs rhythmbox vs whatever) and it can be connected to 
multiple slot implementations. This is the beauty of interfaces and how they 
can be thought of as 'contracts' between slots and plugs.

Hope this helps!

-- 
Jamie Strandboge | http://www.canonical.com



signature.asc
Description: This is a digitally signed message part
-- 
Snapcraft mailing list
Snapcraft@lists.snapcraft.io
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/snapcraft


vlc mpris

2017-02-12 Thread Vasilisc

How to allow vlc - "org.mpris.MediaPlayer2.vlc.instance*" ???

[0xd5f358] dbus interface error: Error requesting service name 
org.mpris.MediaPlayer2.vlc.instance3045: Connection ":1.69" is not 
allowed to own the service "org.mpris.MediaPlayer2.vlc.instance3045" due 
to AppArmor policy


--
I don't see interfaces dbus|mpris

# LANG=C apt policy snapd
snapd:
  Installed: 2.21
  Candidate: 2.21
  Version table:
 *** 2.21 500
500 http://fi.archive.ubuntu.com/ubuntu xenial-updates/main 
amd64 Packages

100 /var/lib/dpkg/status
 2.0.2 500
500 http://fi.archive.ubuntu.com/ubuntu xenial/main amd64 Packages

# snap interfaces | grep -E "(dbus|mpris)"
#

--
Best regards,
vasilisc

--
Snapcraft mailing list
Snapcraft@lists.snapcraft.io
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/snapcraft