- C++ 68.9%
- QML 26.5%
- CMake 2.6%
- Shell 1%
- Python 1%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .qtcreator | ||
| img | ||
| presets/visualizerGradients | ||
| qml | ||
| resources | ||
| src | ||
| vendor | ||
| .clang-format | ||
| .clang-tidy | ||
| .gitignore | ||
| .gitmodules | ||
| CMakeLists.txt | ||
| compile_commands.json | ||
| generate-xcode-project.sh | ||
| install-macos.sh | ||
| LICENSE | ||
| README.md | ||
| setup_mpd.py | ||
| Stable.qmlproject.qtds | ||
Quester 
A modern, visually rich MPD and Mopidy client built with Qt 6 and QML
Table of Contents
- About
- Features
- Prerequisites
- Installation
- Usage
- Mopidy Support
- Visualizer Configuration
- Statistics & Scrobbling
- Contributing
- License
About
Quester is a desktop client for the Music Player Daemon (MPD) and Mopidy. It provides a fluid user interface focused on album art and visual feedback. Built using C++ and Qt Quick (QML), it aims to offer a lightweight yet visually appealing way to browse and play your music library.
Features
- Album Browser: Cover-flow style navigation and Grid View for your music library.
- Dual Visualizers:
- Spectrum Analyzer: Custom bar visualizer using FFTW with customizable color presets.
- MPRIS Support: Full D-Bus integration for control via system media keys, desktop widgets, and multimedia keyboards.
- Multiple Audio Sources: Support for PulseAudio, PipeWire, FIFO (MPD/Mopidy audio output), and macOS CoreAudio.
- Automatic Artwork: Fetches album art from MPD/Mopidy (embedded/local), TheAudioDB, or Last.fm.
- Playback Control: Standard controls (Play, Pause, Next, Previous) and seek bar.
- Queue Management: Manage your play queue and playlists easily.
- Statistics Tracking: Track your listening habits with weekly, monthly, yearly, and all-time stats.
- Scrobbling: Submit plays to ListenBrainz and Last.fm.
- Wrapped Feature: Generate year-in-review style summaries of your listening history.
- Duplicate Finder: Find and remove duplicate files in your music library.
- System Tray: Minimize to system tray with playback controls.
- Touch Ready: UI elements sized and spaced for touch interaction.
Gallery
Prerequisites
To build Quester, you need the following dependencies installed on your system:
- C++ Compiler (supporting C++23)
- CMake (3.16 or higher)
- Qt 6 (6.5 or higher)
- KDE Frameworks 6 (Kirigami)
- libmpdclient
- FFTW3 (optional, Kiss FFT is used as fallback on Linux)
- PulseAudio (libpulse)
- PipeWire (libpipewire-0.3, libspa-0.2)
Ubuntu/Debian
sudo apt install build-essential cmake \
qt6-base-dev qt6-declarative-dev qt6-multimedia-dev qt6-sql-dev qt6-xml-dev \
libmpdclient-dev libfftw3-dev libpulse-dev \
libpipewire-0.3-dev libspa-0.2-dev \
kirigami2-dev libkirigami-dev extra-cmake-modules
Note: projectM is included as a git submodule and does not need to be installed separately.
Installation
-
Clone the repository and initialize submodules:
git clone https://codeberg.org/anoraktrend/Quester.git cd Quester git submodule update --init --recursive -
Create a build directory and configure with CMake:
mkdir build cd build cmake .. -
Build the application:
make -
(Optional) Install system-wide:
sudo make install
Usage
Ensure your MPD server is running. By default, Quester attempts to connect to localhost on port 6600. You can change these settings in the General tab of the Settings window.
Run the application from the build directory:
./quester
Mopidy Support
Quester fully supports Mopidy through its MPD extension. Mopidy allows you to play music from various sources like Spotify, SoundCloud, TuneIn, and your local library.
Setup
To set up Mopidy for use with Quester, you can use the provided setup script:
python3 setup_mopidy.py
This script will:
- Install Mopidy and required extensions for your platform.
- Create a default configuration at
~/.config/mopidy/mopidy.conf. - Configure the MPD extension on port 6600.
- Set up the audio output to use a FIFO pipe (
/tmp/mpd.fifo) so the Quester visualizer works correctly.
Configuration
In Quester's Settings > General, ensure the host and port match your Mopidy server (default is 127.0.0.1 and 6600).
Visualizer Configuration
Bar Visualizer Presets
Quester allows you to customize the bar visualizer colors by creating preset files.
To add your own presets, create a directory named presets inside your Quester config folder (e.g., ~/.config/Quester/presets/) and add a .json file there.
JSON Structure:
The JSON file should contain a single root object where keys are preset names and values are color definitions.
Simple Color List (Gradient):
{
"Rainbow": ["#E50000", "#FF8D00", "#FFEE00", "#028121", "#004CFF", "#770088"]
}
Weighted Gradients:
{
"Uneven": {
"colors": ["#FF0000", "#00FF00", "#0000FF"],
"weights": [1, 4, 1]
}
}
projectM
Quester supports projectM visualizations. You can configure the preset path, texture size, and other rendering settings in the application settings dialog.
Statistics & Scrobbling
Quester includes built-in statistics tracking and supports scrobbling to multiple services.
Statistics Tracking
Quester automatically tracks your listening habits and stores them locally in a SQLite database. View your statistics in the app:
- Weekly: Most played artists, albums, and songs from the past 7 days
- Monthly: Listening statistics for the current month
- Yearly: Year-to-date statistics
- All Time: Complete listening history since you started using Quester
Wrapped Feature
At the end of each year, Quester can generate a "Wrapped" summary - a visual recap of your listening habits including:
- Top artists, albums, and songs
- Total listening time
- Activity graphs showing when you listen to music
- Album art collages
ListenBrainz Integration
Quester can submit your plays to ListenBrainz, a free and open-source music tracking service.
- Go to Settings → Statistics
- Enter your ListenBrainz token (get it from your ListenBrainz profile)
- Enable automatic submissions
Last.fm Integration
Quester supports scrobbling to Last.fm:
- Go to Settings → Statistics
- Click "Connect to Last.fm"
- Authorize Quester to access your account
- Your plays will be automatically submitted
Contributing
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
License
Distributed under the MIT License. See LICENSE for more information.

