A lightweight desktop music player for local files, built with Fyne and Go.
Build a simple, minimalist music player with a clean modern design for Linux. No extras — just play your songs.
- Play local audio: MP3, FLAC, WAV, OGG (Vorbis)
- Library and user playlists stored in SQLite (
~/.config/robsong/library.db) - Import individual files or entire folders
- Double-click to play from a track; drag to reorder (persisted)
- Context menu: play, add to playlist, delete from playlist
- Bottom bar with spectrum visualizer, seek, and volume
- Clean light theme
Prebuilt Linux (amd64) packages are on GitHub Releases:
| Artifact | Install |
|---|---|
| Binary | Download, chmod +x, run ./robsong-*-linux-amd64 |
| Tarball | sudo tar -C / -xzf robsong-*-linux-amd64.tar.gz |
| RPM | sudo dnf install ./robsong-*.x86_64.rpm |
| DEB | sudo apt install ./robsong_*_amd64.deb |
Audio codecs ship inside the binary (no ffmpeg). Packages declare only common desktop libraries (OpenGL, X11/Wayland, ALSA). User data stays in ~/.config/robsong/.
Install system dependencies (or run make deps):
sudo dnf install -y \
golang gcc \
libX11-devel libXcursor-devel libXrandr-devel \
libXinerama-devel libXi-devel libXxf86vm-devel \
libglvnd-devel alsa-lib-devel wayland-devel libxkbcommon-develThis project needs CGO (Fyne / OpenGL / ALSA). Without libXxf86vm-devel, the linker may report cannot find -lXxf86vm; the Makefile works around that with a local stub in .link/.
make runOr build then launch:
make build
./robsongRun checks locally (same as CI):
make testThe first build after a clean clone (or go clean -cache) can take 1–2 minutes while CGO compiles Fyne/OpenGL. Later builds are much faster.
Build release artifacts (stripped binary, tarball, RPM, DEB):
make packageOr individually:
make release # dist/robsong
make tarball # dist/robsong-<ver>-linux-amd64.tar.gz
make rpm # dist/robsong-<ver>.x86_64.rpm (needs nfpm)
make deb # dist/robsong_<ver>_amd64.deb (needs nfpm)Install nfpm once for RPM/DEB builds:
go install github.com/goreleaser/nfpm/v2/cmd/nfpm@latestPrebuilt packages are published on GitHub Releases when a version tag (e.g. 0.1.0) matching FyneApp.toml is pushed. See Install for how to use them.
- Import files / Import folder — adds supported tracks to Library (and to the current playlist if one is selected).
- Double-click a track to play it and continue with the following tracks.
- Drag tracks to change order in the playlist (saved to SQLite).
- Use the bottom bar for previous / play-pause / next, seek, and volume.
- New in the sidebar creates a playlist; Add to playlist… adds the selected track.
OGG support is Vorbis only (not Opus).
cmd/robsong/ application entry point
assets/ logo, screenshot, and embedded app icon
packaging/ .desktop entry and release notes
nfpm.yaml RPM/DEB package metadata (nFPM)
internal/
audio/ playback (beep) and FFT analyzer
library/ import and metadata (dhowden/tag)
model/ Track, Playlist
playlist/ SQLite store
queue/ in-memory playback queue
theme/ Fyne theme
ui/ layout and wiring

