mpd-qt6

A desktop MPD client written in Crystal using Qt6 bindings

Crystal MPD

A desktop MPD client written in Crystal using a forked Qt6 shard.

Screenshots

Player

Features

  • Playback controls: play/pause, previous, next
  • Interactive progress slider with elapsed and total time display
  • Shuffle and repeat toggles
  • Live title, artist, and album metadata updates
  • Window title updates to reflect the current track
  • Album art loading when available from MPD
  • Playlist view with current-track indicator icons
  • Double-click a playlist row to start playback
  • Connection settings dialog for MPD host and port
  • Settings are saved in the user config directory

Requirements

  • Crystal >= 1.19.1
  • Qt6 Widgets development packages
    • Arch: pacman -S qt6-base
    • Ubuntu: apt-get install qt6-base-dev
  • A running MPD server

Installation

git clone https://github.com/mamantoha/mpd-qt6
cd mpd-qt6
shards install
shards build --release
./bin/mpd-qt6

Dependencies

Shard Purpose
mamantoha/crystal-qt6 Forked Qt6 bindings for Crystal used by this app
mamantoha/crystal_mpd MPD protocol client

Forked Qt6 shard

This project currently uses a forked version of crystal-qt6 through a local path dependency during development.

Features implemented in the fork

The custom additions include:

  • main-thread invocation support via Qt meta-object dispatch
  • loading icons from the active desktop theme
  • slider pressed and released callbacks
  • setting images on labels
  • label alignment support
  • pixmap scaling with aspect-ratio preservation
  • table widget item double-click callbacks
  • table widget item icon support
  • native add_stretch support for box layouts

Platform support

Tested on Linux with Qt6. macOS and Windows are untested.

Architecture notes

  • One MPD client handles commands and status reads
  • A separate callback-enabled MPD listener pushes live updates from the server
  • UI updates are marshalled safely onto the Qt main thread through a signal-style bridge
  • Playback and playlist controls are built with Qt widgets such as push buttons, sliders, and table views

License

MIT

Repository

mpd-qt6

Owner
Statistic
  • 0
  • 0
  • 0
  • 0
  • 1
  • about 9 hours ago
  • April 16, 2026
License

MIT License

Links
Synced at

Thu, 16 Apr 2026 14:29:38 GMT

Languages