A faceted library browser plugin for the DeaDBeeF music player on Linux. It brings a Columns UI / Facets style multi-filter layout to DeaDBeeF, optimized for users who navigate large collections via metadata rather than static playlists.
Note: This is considered completed software. It is effectively feature complete; bug fixes will be addressed as they come, but no new features are planned. It has been thoroughly tested and is known to be fully functional on the primary development environment: Fedora Linux 44 (Workstation Edition), kernel
7.0.10-201.fc44.x86_64, running DeaDBeeF 1.10.2 with GTK 3.24.52. The plugin is v1.3.3, written in C11 against DeaDBeeF Plugin API level 18+ (the installeddeadbeef-develhere provides level 19), and built with GCC 16 via CMake 4.3. A prebuiltcompiled/ddb_misc_cui_GTK3.sois kept in sync with the source for users who do not want to build. GTK4 forward-compat shims are in place, but GTK3 is the only officially tested build target.
DeaDBeeF is inherently playlist-focused. For users with libraries exceeding 10,000 tracks, navigating via manual playlists or simple searches is insufficient. deadbeef-cui bridges this gap by implementing a dynamic, multi-pane filter layout mirroring foobar2000's Columns UI.
The plugin drives DeaDBeeF's existing playlist view seamlessly. To prevent accidental deletion of your manual playlists, the plugin dynamically creates and targets a dedicated "Library Viewer" playlist. Selecting items in the facets automatically populates this playlist with the corresponding tracks, combining the power of faceted browsing with the player's lightweight core.
| Component | Description |
|---|---|
| Dynamic Columns | Configure 1 to 5 interactive list views filtering hierarchically. |
| Custom Formatting | Full support for DeaDBeeF title formatting syntax. |
| Integrated Search | Filter facets dynamically via a CTRL-SHIFT-F search bar. |
| Multi-Selection | Aggregate filters across multiple genres/artists via Ctrl/Shift-click. |
| Native Integration | Built as a native C GTK3 plugin using the DB_mediasource_t API. |
This plugin is developed and tested on Fedora Linux (currently Fedora 44, x86_64) running DeaDBeeF 1.10.2 with the GTK3 GUI plugin. The project is effectively feature-complete; I review and fix issues as the community reports them but am not actively adding features.
The committed binary is provided as a convenience for users who don't want to compile.
| Constraint | Requirement |
|---|---|
| Architecture | x86_64 only (no i686/32-bit, no ARM/aarch64) |
| Linux glibc | 2.34 or newer |
| Operating system | Linux only (the binary is an ELF .so) |
| GTK | DeaDBeeF's GTK3 GUI plugin (ddb_gui_GTK3.so) must be the active GUI |
| DeaDBeeF | 1.10.x (uses DB_mediasource_t API, level 18+) |
The glibc 2.34 floor exists because that release moved dlopen/dlsym/dlclose from libdl.so.2 into libc.so.6 and rebound them to GLIBC_2.34. The binary calls those three functions to share the GTKUI plugin's media library source.
| Distro | Released | glibc | Pre-built binary works? |
|---|---|---|---|
| Fedora 35+ | 2021+ | 2.34+ | ✅ |
| Ubuntu 22.04 LTS | 2022 | 2.35 | ✅ |
| Ubuntu 24.04 LTS | 2024 | 2.39 | ✅ |
| Debian 12 (Bookworm) | 2023 | 2.36 | ✅ |
| RHEL / Rocky / Alma 9 | 2022 | 2.34 | ✅ |
| openSUSE Leap 15.6 | 2024 | 2.38 | ✅ |
| Arch / Tumbleweed | rolling | latest | ✅ |
| Ubuntu 20.04 LTS | 2020 | 2.31 | ❌ — compile from source |
| Debian 11 (Bullseye) | 2021 | 2.31 | ❌ — compile from source |
| RHEL / Rocky / Alma 8 | 2019 | 2.28 | ❌ — compile from source |
| openSUSE Leap 15.5 | 2023 | 2.31 | ❌ — compile from source |
If your system can't run the pre-built binary — or if you're on any architecture other than x86_64, or any OS where DeaDBeeF runs with the GTK3 GUI — compile from source. The result will be linked against your system's libraries and will work on that system regardless of how old its glibc is. See the Development & Build section below.
- Linux only. DeaDBeeF itself runs on Linux, macOS, and Windows, but those platforms use different GUI plugins. This widget is specifically a GTK3 plugin and won't load under macOS Cocoa or Windows native UIs.
- GTK3 only. The codebase carries forward-compatibility shims for GTK4 (see
cui_globals.h), but DeaDBeeF currently ships only a GTK3 GUI. When DeaDBeeF gets a GTK4 GUI plugin, this widget should compile against it with minimal changes. - Requires the medialib plugin. Without
medialib.soenabled, the widget renders an empty layout. The medialib plugin ships with DeaDBeeF — no extra step needed unless you've explicitly disabled it. - No cross-compilation. The
CMakeLists.txtusespkg-configto discover GTK3, which assumes a native build environment. Cross-compiling from x86_64 to i686 or aarch64 is plausible but untested.
- GTK+ 3.0 development headers (
gtk3-develon Fedora/RHEL,libgtk-3-devon Debian/Ubuntu) - DeaDBeeF development headers (
deadbeef-develon Fedora/RHEL; on Debian/Ubuntu you may need to grab them from DeaDBeeF's source release if not packaged) — should land at/usr/include/deadbeef/ - CMake 3.10+ & a C11-capable compiler (GCC 4.8+ / Clang 3.3+)
cmake -S . -B build
cmake --build buildmkdir -p ~/.local/lib/deadbeef
cp build/cui.so ~/.local/lib/deadbeef/ddb_misc_cui_GTK3.soEnter Design Mode in DeaDBeeF to add the Facet Browser (CUI) widget to your layout.
Launch DeaDBeeF from a terminal with deadbeef --gui GTK3 -d 2>&1 | grep cui — you should see deadbeef-cui: Facet Browser v1.3.3 registered successfully. on startup. If the line is missing, the plugin failed to load (check the rest of the log for unresolved symbols or missing libraries).
Inspired by the gold standard of library management: foobar2000 and its legendary Columns UI and Facets components.
If deadbeef-cui is useful to you and you'd like to chip in:
bc1qkge6zr45tzqfwfmvma2ylumt6mg7wlwmhr05yv
