Rhythmbox

Rhythmbox is a music playing application for GNOME using the GStreamer multimedia framework.

If your packaging system includes GNOME, it likely also includes Rhythmbox. It's also included in the default installation in some Linux distributions.

Development

Rhythmbox is developed on the GNOME GitLab platform and is translated by GNOME translation teams. You can build the current development version of Rhythmbox on any recent operating system that includes GNOME development libraries and tools. A brief overview of the installation requirements is included with the source code.

Contact

Bug reports and feature requests are managed using GitLab issues. For other types of questions and discussions, use the 'rhythmbox' tag under the 'Applications' category in GNOME Discourse, or join #gnome-rhythmbox on the Libera.Chat IRC network.

Plugins

Rhythmbox can be extended through its plugin system, which loads plugins written in Python and C. Many optional features of the application are built as plugins, and there are many third party plugins available.

Latest releases

  • 3.5.0
    Highlights:
    • New playback backend is enabled by default
    • Support for finding lyrics using lrclib.net, in sidecar .lrc files, and embedded in Ogg files
    • Reworked notifications for podcast updates and downloads
    • Redesigned display of podcast episodes, including indication of episodes that have already been played
    • New plugin implementing podcast feed and episode sync using the gPodder.net API
    Issues fixed:
    • 2124: player backend breaks with crossfade duration set to 0
    • 2133: rb-ext-db: ‘req’ may be used uninitialized warning
    Merge requests:
    • 199: data: Rename appdata to metainfo
    • 204: lyrics.py: support sidecar .lrc files
    • 205: lyrics: Support embedded lyrics in vorbis files with gstreamer 1.25.90+
    • 206: Fix a year-2038-problem
    • 207: podcast: Fix uninitialised unref in error path
    Translation updates:
    • cs, courtesy of Daniel Rusek
    • da, courtesy of Alan Mortensen
    • fr, courtesy of Irénée Thirion
    • fr, courtesy of Jean-Marc Tissières
    • hu, courtesy of Balázs Úr
    • ka, courtesy of Ekaterine Papava
    • kk, courtesy of Baurzhan Muftakhidinov
    • lt, courtesy of Aurimas Černius
    • oc, courtesy of Quentin PAGÈS
    • pt_BR, courtesy of Luiggi R. Cardoso
    • pt, courtesy of Hugo Carvalho
    • ru, courtesy of Артур Беляев
    • sl, courtesy of Martin Srebotnjak
    • sr, courtesy of Марко Костић
    • sv, courtesy of Anders Jonsson
    • tr, courtesy of Sabri Ünal
    • uk, courtesy of Yuri Chornoivan
    • zh_CN, courtesy of lumingzh
  • 3.4.9
    Highlights:
    • Python plugin loader now works with new pygobject/libpeas
    • New playback backend, replacing the old crossfading backend
    Issues fixed:
    • 2009: apidoc not installed
    • 2111: Error activate plugins: libpeas: Could not load plugin loader 'python3'
    • 2112: Constant CPU usage and wakeups while idle with an Android device plugged in
    • 2118: GLib2 changed the way g_values copy GStrings. This breaks rhythmbox
    Merge requests:
    • 192: Add CUE plugin to Third Party Plugins list
    • 198: main: Fix window not being matched to application
    • 200: Update POTFILES.in
    Translation updates:
    • ca, courtesy of Assumpta, 2021
    • ca, courtesy of Jordi Mas i Hernàndez
    • da, courtesy of Alan Mortensen
    • fr, courtesy of Jean-Marc Tissières
    • id, courtesy of Andika Triwidada
    • it, courtesy of Milo Casagrande
    • ja, courtesy of Makoto Sakaguchi
    • lt, courtesy of Aurimas Černius
    • nl, courtesy of Nathan Follens
    • ru, courtesy of Ser82-png
    • sv, courtesy of Anders Jonsson
    • uk, courtesy of Yuri Chornoivan
  • 3.4.8
    Highlights:
    • Minor improvement release for 3.4
    • Improved support for podcast episode images
    • Better handling of the split between Android and MTP plugins
    • The long-broken DAAP server now works again
    • API documentation now generated by gi-docgen
    Issues fixed:
    • 1715: Sync fails to create playlist if directory does not exist
    • 1828: extdb: support cancellation
    • 1832: rhythmbox hangs when it cannot play the file
    • 2001: "Access key" string needs a translator comment
    • 2050: Orca does not present items in left panel correctly
    • 2052: The "rating" widget should not have the "unknown" accessible role
    • 2065: Trivial/Clerical fix on debug statement in MTP plugin
    • 2066: Pause/Stop button incorrect context (radio stream vs playlist queue)
    • 2067: Add Lenovo to android-mtp match/allow-list
    • 2072: Incorrect/missing URLs in app metadata
    • 2073: Phone not being recognized as Android PTP device
    • 2080: cgi module is being deprecated since Python >= 3.13
    • 2084: Access to Rhythmbox via DAAP from Android gets "Unable to Connect!"
    • 2086: Rhythmbox crashing sync with Android device
    Merge requests:
    • 27: generic-player: create directory when syncing playlist
    • 143: Updates iradio-initial.xspf
    • 144: Stronger sanitization for generic player sync
    • 153: Convert README and internals documentation to markdown
    • 175: build: Define _GNU_SOURCE for pthread_getname_np
    • 178: Add missing includes to fix crash with libxml2 2.12
    • 179: Appdata related patches
    • 180: data: Appdata fixes after Flathub review
    • 181: notification: Fix libnotify warning in Flatpak
    • 185: context: use html.escape instead of cgi.escape
    • 186: Add a "delete file only" option for podcasts.
    • 187: Fix strict prototype compiler warning with clang
    • 188: Fix Python3 invalid escape sequences.
    • 189: appdata: Use rDNS developer name
    Translation updates:
    • be, courtesy of Yuras Shumovich
    • ca, courtesy of Jordi Mas i Hernàndez
    • cs, courtesy of Daniel Rusek
    • da, courtesy of Alan Mortensen
    • de, courtesy of Tim Sabsch
    • fi, courtesy of Jiri Grönroos
    • hi, courtesy of Scrambled777
    • hu, courtesy of Balázs Úr
    • id, courtesy of Andika Triwidada
    • ka, courtesy of Ekaterine Papava
    • kk, courtesy of Baurzhan Muftakhidinov
    • lt, courtesy of Aurimas Černius
    • lv, courtesy of Rūdolfs Mazurs
    • oc, courtesy of Quentin PAGÈS
    • pl, courtesy of Piotr Drąg
    • pt_BR, courtesy of Juliano de Souza Camargo
    • pt, courtesy of Hugo Carvalho
    • ro, courtesy of Florentina Mușat
    • ru, courtesy of Ser82-png
    • sl, courtesy of Martin Srebotnjak
    • sv, courtesy of Anders Jonsson
    • th, courtesy of Kiatkachorn Ratanatharathorn
    • tr, courtesy of Emin Tufan Çetin
    • uk, courtesy of Yuri Chornoivan
    • zh_CN, courtesy of lumingzh
    • zh_TW, courtesy of Cheng-Chia Tseng