Contributing
1. Getting Involved
More information about getting involved with other GNOME apps (and many tips that apply to Rhythmbox) can be found at GettingInvolved.
2. Building Rhythmbox from Source
2.1. Getting the source
You can checkout the current Rhythmbox source from GNOME gitlab.
$ git clone https://gitlab.gnome.org/GNOME/rhythmbox.git
More information on how to use git can be found here. Alternatively, you can also download release tarballs from here.
2.2. Installing build dependencies
Before you can build Rhythmbox from a source tarball, or from source checked out from gitlab, you'll need to make sure you have the required development libraries and headers installed. Normally, these dependencies can be installed with a single command:
For Debian / Ubuntu / Linux Mint / Elementary OS / Zorin OS / Peppermint OS / Pop!_OS:
$ sudo apt build-dep rhythmbox
For Fedora / RHEL / CentOS:
$ sudo dnf builddep rhythmbox
Rhythmbox requires:
- GNOME 3.0 or newer (including GLib 2.38 and GTK+ 3.20)
- GStreamer 1.4.0 or newer
- totem-pl-parser 3.2.0
- libsoup 2.42.0
- gobject-introspection 0.10.0
- json-glib 1.0
- libpeas 0.7.3
- tdb 1.2.6
Optional packages for additional functionality:
- GUdev 143 or newer (or hal)
- libgpod 0.6 or newer for iPod support
- libmtp 0.3 or newer for MTP device support
- libnotify 0.7.0
- brasero for audio CD burning
- Python3 and pygobject 3.0 to enable plugins written in Python3
- libdmapsharing 2.9.19 or newer for DAAP music sharing
- grilo 0.3.0 or newer
This list might not always be up-to date. Updated dependencies are always available in meson.build.
2.3. Building Rhythmbox
Run the following command the first time, you're building rhythmbox.
For rhythmbox <= 3.4.4,
$ ./autogen.sh
The following commands should build rhythmbox, run the unittests and start it.
$ make $ make check $ shell/rhythmbox
For rhythmbox > 3.4.4,
For system installation,
$ meson _build # prepare the build $ ninja -C _build # build Rhythmbox $ ninja -C _build install # install Rhythmbox $ rhythmbox # start Rhythmbox
For non-system installation,
$ meson _build -Dprefix=$PWD/_install # prepare the build $ ninja -C _build # build Rhythmbox $ ninja -C _build install # install Rhythmbox
This installs Rhythmbox to the _install directory under the source tree. The executable to run will then be _install/bin/rhythmbox. Before you can run it from there, you will also need to set an environment variable to load schemas from the install location:
$ export GSETTINGS_SCHEMA_DIR=$PWD/_install/share/glib-2.0/schemas $ _install/bin/rhythmbox
By default, the build will enable optional features if the packages they require are installed. To check which options are available and which are enabled, run 'meson configure _build'.
3. Debugging
In most ways, Rhythmbox is a typical GNOME application. There is some information on debugging GTK+ applications, and instructions for providing stack traces.
Rhythmbox can provide debug output when invoked with the '-d' command line option, which enables all debug output, or the '-D <match>' option, which enables all debug output from functions and source files containing the match string. When running in a debugger with some debug output enabled, Rhythmbox will also cause the debugger to stop on any GLib warning or critical message.
For more complicated problems, it may be necessary to use the Valgrind tools. Instructions for running these on GNOME applications.
3.1. Debugging metadata helper
Metadata helper is a separate binary part of Rhythmbox, which is activated by Rhythmbox over D-Bus, when any metadata ( mp3 / ogg tags ) are updated in Rhythmbox UI.
Perform the following steps to start debugging metadata related issues:
- Run the metadata helper (rhythmbox-metadata, usually in /usr/lib, /usr/libexec or /usr/lib64) under whatever debugging tool you want to use (gdb, valgrind, etc.)
Copy the D-Bus address it prints out. (E.g. unix:abstract=/tmp/dbus-fmvS5vND)
Start rhythmbox as: RB_DBUS_METADATA_ADDRESS=<address> rhythmbox
- Do whatever you need to do.
4. Submit fixes
Submit fixes by creating a new merge request to Rhythmbox.
5. Translating
Just as many other GNOME applications, Rhythmbox is translated by the GNOME translation team. You can check the translation status here.
6. Documentation
If you want to write documentation for Rhythmbox, you should join the GNOME Documentation team.