Impy-D

Graphical client for Music Player Daemon.

Dec 2025 – Present

Links

  • GitHub

Notable Features

  • Fast, highly customizable ImGui based interface.
  • Changes sent from the server efficiently update the GUI in real time using an asynchronous event loop system.
  • Custom string formatter used anywhere information about a song is displayed, for total customization. "%album% - %artist% ($year(%date%))" anyone?

Roadmap

  • Make some cool audio visualizers. With full access to an OpenGL context through GLFW, the possibilities are endless.
  • Create a super-fast album artwork grid view. Album artwork isn’t something that changes often, so it could be quite well suited to cached texture atlases.
  • Implement a plugin API and loading system.

Gallery

Image of Impy-D interface. Image of Impy-D interface. Animation of customizing the Impy-D interface. Every GUI component is a window that can be arranged using ImGui’s excellent docking system.

Motivation

When I switched from Windows to Linux (I use Arch Fedora btw), one of the first questions I faced was what I would use as a replacement for the legendary foobar2000 music player. I stuck with it because its plain Win32 GUI was plenty customizable and never got in the way, and it had a mature plugin ecosystem. On Linux, foobar mostly works under Wine, but not quite as well as I had hoped, mainly regarding plugin support. I decided to try some native Linux players, of which there is a healthy selection, but none of them quite scratched the itch for me.

I thought to myself that it would be cool to make my own music player with the exact kind of interface I wanted, but the actual playback and library management part is probably more trouble than it’s worth. I soon learned that someone had already solved half of my dilemma by creating Music Player Daemon (MPD). As the name implies, MPD runs as a background process with no GUI and plays music. In fact, it has no included interface of any kind; the only way to control it is to connect to it via TCP or a local socket and send commands using a simple text-based protocol. It takes care of playback and managing a database of the music library, and you’re in charge of how to control it. My prayers had been answered!

Tags

  • c++

  • cmake

  • glfw

  • imgui

Site design and content © 2026 Aiden Pogue

  • 'Email Me' Badge
  • LinkedIn Profile Badge
  • GitHub Profile Badge

Font info

  • Index
  • Projects
  • Blog