Contributing

Getting Involved

More information about getting involved with other GNOME apps (and many tips that apply to Rhythmbox) can be found at GettingInvolved.

Building Rhythmbox from Source

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.

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 configure.ac.

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=~/rhythmbox.install    # prepare the build
$ ninja -C _build                              # build Rhythmbox
$ ninja -C _build install                      # install Rhythmbox
$ ~/rhythmbox.install/bin/rhythmbox            # start Rhythmbox

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.

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:

  1. 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.)
  2. Copy the D-Bus address it prints out. (E.g. unix:abstract=/tmp/dbus-fmvS5vND)

  3. Start rhythmbox as: RB_DBUS_METADATA_ADDRESS=<address> rhythmbox

  4. Do whatever you need to do.

Submit fixes

Submit fixes by creating a new merge request to Rhythmbox.

Translating

Just as many other GNOME applications, Rhythmbox is translated by the GNOME translation team. You can check the translation status here.

Documentation

If you want to write documentation for Rhythmbox, you should join the GNOME Documentation team.

Apps/Rhythmbox/Contributing (last edited 2021-11-16 15:10:07 by crvi)