Skip to main content

A desktop music player for Linux, built with PyQt6.

Project description

RoPlayer

A desktop music player for Linux, built with PyQt6. Point it at a folder of local audio files and it organizes everything into a browsable library — albums, artists, playlists, and a YouTube Music-style home screen — with cover art, synced lyrics, Last.fm scrobbling, Chromecast support, and native Linux desktop integration.

Features

Library & playback

  • Local library scanning — recursively scans a music folder, grouping tracks into albums by folder and tag metadata. Supports .mp3, .flac, .m4a, .mp4, .ogg, .oga, .wav, .wma, and .aac.
  • Cover art & tags — pulls embedded artwork and metadata (artist, album, year, title) straight from your files via Mutagen.
  • Home, Library, and Artist views — browsable shelves and artist detail pages with photos and public listener/scrobble stats.
  • Adaptive theming — the UI's accent color smoothly crossfades to match the average color of whatever's currently playing, so the whole app subtly shifts with your cover art.
  • Playback modes — shuffle and repeat (track/playlist), with playback position remembered between sessions.
  • Search — quick search across your library.

Playlists & queue

  • Playlists — create, rename, delete, and reorganize playlists; add or remove tracks from anywhere in the app via right-click; set a custom cover image per playlist, or let RoPlayer generate one from the tracks inside it.
  • Play queue — a session queue separate from your playlists. "Play Next" or "Add to Queue" from any track's context menu, then drag-and-drop to reorder the queue itself.
  • Pinned albums — pin favorite albums so they always surface at the top of your library.

Home screen & smart mixes

  • Jump Back In — surfaces whatever you've been listening to heavily lately, including your own generated mixes.
  • Made For You — a set of algorithmically generated mixes built from your own listening history, each with its own generated cover art:
    • Replay Mix and On Repeat — built from your overall and current heavy-rotation listening.
    • Forgotten Favorites — tracks you used to play a lot but haven't touched recently.
    • Album Rewind and Month Rewind — revisits albums and stretches of your history you've drifted away from.
    • Night Owl and Morning Mix / Weekend Mix — time-of-day and day-of-week aware mixes.
  • Recently Played, Recently Added, Most Played, Favorites — additional home shelves rounding out your library at a glance.
  • Artist Top Songs — each artist page ranks their most-played tracks in your library, with a one-click toggle to play them as a mix.
  • Fan-favorite badges — artist and album cards can show a "fan favorite" flame badge sourced from Last.fm's public listening data.

Lyrics

  • Lyrics view — dedicated panel for following along while a track plays.
  • Synced lyrics — automatically picks up a matching .lrc (or timestamped .txt) file alongside a track and highlights lines in time with playback; falls back to plain static lyrics when no timed file is found.

Scrobbling & casting

  • Last.fm scrobbling — logs in via your browser, tracks now-playing status, and scrobbles as you listen.
  • Chromecast support — cast playback to any Chromecast device on your network.

Desktop integration

  • MPRIS2 integration — media keys, system tray widgets, and lock-screen "now playing" info on Linux desktops (KDE Plasma, GNOME, etc.) via D-Bus.

Requirements

  • Python 3
  • PyQt6 (including QtMultimedia)
  • Mutagen for tag/cover-art reading
  • pychromecast for Chromecast support
  • dbus-python and PyGObject (optional — enables MPRIS2 desktop integration on Linux; the app runs fine without them, just without media-key/tray support)

Installation

Arch Linux

A PKGBUILD is included:

makepkg -si

Manual

git clone https://github.com/rohanisawesome/RoPlayer.git
cd RoPlayer
pip install PyQt6 mutagen pychromecast
python player.py

Usage

Launch RoPlayer and point it at your music folder to build your library. From there:

  • Browse Home for your generated mixes and shelves, or jump into Library, Artist, Playlists, or the Queue
  • Use the search bar to jump straight to a track, album, or artist
  • Right-click any track, album, or playlist to Play Next, Add to Queue, or add it to a playlist (including creating a new one on the spot)
  • Pin an album from its context menu to keep it at the top of your library
  • Drop a .lrc file next to a track (same filename, .lrc extension) to get synced, line-by-line lyrics
  • Enable Last.fm scrobbling from the settings dialog to start tracking plays
  • Right-click a Chromecast-capable device to cast playback

Configuration & data

  • Settings are stored via QSettings under the RohanApps/AdaptiveMusicPlayer namespace.
  • Cached artist images, bios, and stats live in ~/.cache/AdaptiveMusicPlayer.
  • Playlists, pinned albums, and queue state are stored locally alongside your other settings.
  • Last.fm session keys are stored locally per-user and are never included in this repository.

License

MIT — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

roplayer-0.1.0.tar.gz (12.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

roplayer-0.1.0-py3-none-any.whl (4.7 kB view details)

Uploaded Python 3

File details

Details for the file roplayer-0.1.0.tar.gz.

File metadata

  • Download URL: roplayer-0.1.0.tar.gz
  • Upload date:
  • Size: 12.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.6

File hashes

Hashes for roplayer-0.1.0.tar.gz
Algorithm Hash digest
SHA256 68f44393dcfdc277b804a2417f14107db13d4db163ce2672c7ceb014e7668678
MD5 7b16cbaf95b757dc677f6b1008bad77d
BLAKE2b-256 4fd06419e1fd037725d455743f9130082bf5bf2b9ecabce8054e620a432f6adf

See more details on using hashes here.

File details

Details for the file roplayer-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: roplayer-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 4.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.6

File hashes

Hashes for roplayer-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 80301b54468601ee52e58ef855ef073b2f92601aa71da7f527877ff1c9c3db7b
MD5 ba4ebb46b20e93b2128439f5381c1a6e
BLAKE2b-256 6e8f5f133e7bc1d8c948ced9c7274cfbdaaae551a82a6e9b15a896173ee0fdc0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page