A desktop music player for beets libraries. Browse and play your collection by album, artist, or recent additions.
- C++ 94.2%
- CMake 5.2%
- C 0.4%
- Shell 0.2%
| src | ||
| .gitignore | ||
| beetnik.desktop | ||
| CLAUDE.md | ||
| cmake_uninstall.cmake.in | ||
| CMakeLists.txt | ||
| icon.svg | ||
| install.sh | ||
| LICENSE | ||
| PLAN.md | ||
| README.md | ||
| resources.qrc.in | ||
| screenshot.png | ||
BeetNik
A desktop music player for beets libraries. Browse and play your collection by album, artist, or recent additions.
Features
- Browse all albums, recently added, or a random selection
- Artist list view with per-artist album browsing
- Album detail view with track list
- Embedded cover art via beets artpath or ID3v2 tags
- Play button overlay on album hover
- Persistent player bar with seek and volume controls
- Click player bar artwork to open the current album
Global Media Keys (Hyprland)
BeetNik registers an MPRIS2 D-Bus interface (org.mpris.MediaPlayer2.beetnik), so media keys work system-wide via playerctl. Add to ~/.config/hypr/hyprland.conf:
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous
bindl = , XF86AudioNext, exec, playerctl next
You can adapt to your window manager. The following put Beetnik in a scratchpad window:
bind = SUPER, b, togglespecialworkspace, special:beetnik
windowrule {
name = beetnik
match:class = ^beetnik$
workspace = special:beetnik
}
Requirements
- Qt 6 (Core, Gui, Widgets, Sql, Multimedia, MultimediaWidgets, DBus)
- TagLib
- rsvg-convert (for building the icon)
Build
cmake -B build -S . -DCMAKE_INSTALL_PREFIX=~/.local
cmake --build build -j$(nproc)
Install
cmake --install build
This installs the binary, icon, and desktop entry, then refreshes the GNOME icon and application caches.
Uninstall
cmake --build build --target uninstall
Removes all files listed in build/install_manifest.txt. Run after installing with the same --prefix.
Configuration
BeetNik reads the beets SQLite database at:
~/.local/share/beets/musiclibrary.db
Thanks
Thanks to Navidrome for the interface and the beets project.
License
3-Clause BSD — © 2026 Ivan Kanis
