Re: [Rhythmbox-devel] default plugin directory (ubuntu)
- From: Sean McNamara <smcnam gmail com>
- To: rhythmbox-devel gnome org
- Subject: Re: [Rhythmbox-devel] default plugin directory (ubuntu)
- Date: Sat, 17 Dec 2011 14:09:38 -0500
On Sat, Dec 17, 2011 at 1:47 PM, giopas <linux giopas eu> wrote:
> Hi crew,
> After MANY months, I recently had the time to switch on my home workstation
> again :)
> I'm now using Gnome3.2 on Ubuntu 11.10 (and rhythmbox, of course).
> Some months ago I noticed that just after Gnome3 upgrade many rhythmbox' s
> third party plugins did not work anymore. So today I tried to make rhythmbox
> work again, downloading my most favorite plugins: pitch/temp contro,
> lastfm_queque and now I wanted to try even sleepbox and rhythmote (or
> something to be used with Android).
"Pitch/tempo shifting" should be rbpitch (pretty much the project's
name under the hood; I call it "pitch and tempo shifting" in the
plugins UI to be user-friendly). I'm actively working on rbpitch right
In a nutshell, the reason why a lot of the plugins stopped working is
that Ubuntu 11.04 (and earlier) were using the Gnome 2 based version
of Rhythmbox, while the version of Rhythmbox in Ubuntu 11.10 uses the
Gnome 3 based version of Rhythmbox. For comparison, here are the
underlying technologies that changed between these releases (a
Rhythmbox 0.13.x in Ubuntu 11.04: Gnome 2.x libraries, GTK+ 2.x, GConf
2.x, and a Rhythmbox plugins API designed specifically for Rhythmbox.
Rhythmbox "2.90.1" in Ubuntu 11.10 (a pre-release of Rhythmbox 3.0):
Gnome 3.x libraries, GTK+ 3.x, GSettings instead of GConf, and the
libpeas plugin architecture (an external library) instead of
Rhythmbox's home-grown plugin API.
These technology changes have, in turn, passed down a number of
necessary changes to all Rhythmbox plugins.
Because of the way Rhythmbox is maintained, a great number of useful
plugins are *not* included in the upstream Rhythmbox sources. So, when
these platform changes were being made in the Rhythmbox sources, only
the "core plugins" -- the plugins supported in the upstream Rhythmbox
tree -- were ported over to the new platform. All the third-party
plugins were not ported by the Rhythmbox core developers, because they
have no direct control over third-party plugins.
If all you ever need to use is core plugins, then everything is happy,
and you'll never notice that the platform changed underneath (unless
you notice enhancements in the UI or functionality). But if you use
third-party plugins, such as rbpitch, then yes you are going to have
problems, until the third-party plugin authors fix their code.
> However if I put these plugins in ~/.local/share/rhythmbox/plugins they seem
> not working. Moreover I see that for some of them it is told to be put in
> ~/gnome2/rhythmbox/plugins but they do not work either.
> Where should I put such plugins to make them work? Which is the default
> plugin' s directory in Ubuntu 11.10? Which are plugins that currently work
> under Gnome 3.2?
I'm not going to answer these questions directly because I have never
played around with installing plugins in a user directory; I usually
install them system-wide. I will discuss, however, a change that I
observed in the system-wide plugins directories for Rhythmbox in
Fedora 16; maybe this will give you some insight.
One thing you should be aware of (and this *really* tripped me up
during development of rbpitch for Rhythmbox 2.90.x) is that
system-installed plugins now have two plugin directories, where
previously it only had one.
Let me explain.
Each plugin has the following required files (where "foo" is a
placeholder for the name of the plugin).
In rhythmbox 0.13.x, for system-installed plugins (requires root),
these files went in $(LIBDIR)/rhythmbox/plugins/foo (where $(LIBDIR)
is for example, /usr/lib or /usr/lib64).
In rhythmbox 2.90.x, they still go in that folder.
libfoo.so -- This is binary execute code (a shared library) which
comprises the "guts" of the plugin. You get a .so file if your plugin
is native code, e.g. written in C, C++ or Vala.
foo.py -- This is Python interpreted code, which does the same thing
as a libfoo.so, but for plugins written in Python. It's still the core
"guts" of the plugin.
foo.plugin -- This is a plain text file that provides a "metadata"
description of the plugin. This allows Rhythmbox to provide the user
some basic information about the plugin, without even loading the code
of the plugin from libfoo.so or foo.py.
Each plugin can also have any number of OPTIONAL files. They are
optional because they are not part of the core Rhythmbox plugin
architecture. Rhythmbox itself doesn't do anything with these files
directly; the plugin code does. They are considered "plugin data"
according to the Rhythmbox source code.
In rhythmbox 0.13.x, plugin data went in the same directory as the
required plugin files.
In rhythmbox 2.90.x, they now go in a totally different folder! It's
now /usr/share/rhythmbox/plugins/foo (or whichever directory was
passed as the shared directory in the configure step of Rhythmbox).
I'm not sure if this is something that was specifically configured for
my distro (Fedora 16), or if Ubuntu does this also, due to a change in
the default settings of Rhythmbox if you pass ./configure with no
arguments. I'm sure I could find out quickly enough by running
./configure on the RB source tree, but I'll let you figure that out.
BTW: You might want to watch
http://ubuntuforums.org/showthread.php?t=1303297 if you are interested
in the development of rbpitch. I will be pushing out a new version
hopefully this weekend.
> Thank you!!
> rhythmbox-devel mailing list
> rhythmbox-devel gnome org
] [Thread Prev