A simple desktop music player for Linux, macOS, and Windows. It plays local audio files and audio CDs with a minimal GTK3 interface.
Audio
- MP3
- FLAC
- WAV
- Ogg Vorbis / Opus
- AIFF / AIF
- WMA
- M4A / AAC / ALAC
- APE, WavPack, TTA, Musepack, AC3, DTS, AMR, RealAudio, CAF, AU, VOC, DSF/DFF, and other FFmpeg-readable audio files
- Raw PCM (
.raw,.pcm) with heuristic dynamic bit-depth detection (16/24/32-bit signed little-endian, stereo, 44100 Hz) via filename or CUE-sheet duration hints
Playlists
- M3U / M3U8
- PLS
- XSPF
- CUE sheets
Other Sources
- Audio CD tracks (via CD-ROM drive)
- HTTP/HTTPS streams
| OS | Architecture | Distribution Format | Notes |
|---|---|---|---|
| Linux | amd64 | AppImage | Native & cross-build supported |
| Linux | arm64 | AppImage | Cross-build via QEMU / toolchain |
| Linux | riscv64 | AppImage | Cross-build via Debian ports |
| macOS | arm64 | DMG | Apple Silicon only |
| Windows | amd64 | ZIP | MSYS2 / UCRT64 build |
- Go 1.25.6 or later
- GTK3 development headers (
libgtk-3-dev) - libopusfile development headers (
libopusfile-dev) - libasound2 development headers (
libasound2-dev) - FFmpeg libraries (
libavcodec-dev,libavformat-dev,libavutil-dev,libswresample-dev) - For cross-compilation:
gcc-aarch64-linux-gnu(forlinux/arm64)gcc-riscv64-linux-gnu(forlinux/riscv64)
makeOr directly with Go:
go build ./cmd/gozikTo produce standalone AppImage bundles for all supported Linux architectures:
# Ensure cross toolchains and mksquashfs are installed
sudo apt-get install -y gcc-aarch64-linux-gnu gcc-riscv64-linux-gnu mksquashfs
# Build per architecture
./build_appimage.sh amd64
./build_appimage.sh arm64
./build_appimage.sh riscv64Artifacts are written to dist/:
dist/gozik-amd64.AppImagedist/gozik-arm64.AppImagedist/gozik-riscv64.AppImage
Note:
riscv64requires Debian ports multiarch setup (dpkg --add-architecture riscv64). The script attempts to configure this automatically; if it fails, add the ports repository manually.
./gozikYou can also pass files or playlists as arguments:
./gozik song.flac playlist.m3u- Open: Add local audio files to the playlist
- Open CD: Load audio tracks from a CD-ROM drive (
/dev/sr0) - Play / Pause / Stop: Standard playback controls
- Progress bar: Click or drag to seek within the current track
- Volume knob: Adjust playback volume
- Right-click on a track: Remove it from the playlist
- Theme toggle: Cycle light / dark / system theme
Gozik enriches tracks automatically using:
- MusicBrainz for artist, album, year, and cover-art lookup
- LRCLIB (https://lrclib.net) for synced and plain-text lyrics
Metadata is fetched in the background when a track starts playing or is added to the queue.
assets/ Icons, CSS, Glade UI files, and desktop entry
cmd/gozik/ Application entrypoint
internal/
audio/ Audio playback engine (beep + FFmpeg), metadata, lyrics
cdrom/ CD-ROM reading (Linux)
config/ Asset paths and theme persistence
models/ Data types (Song, Waveform, Chapter)
ui/ GTK3 window, controls, and MPRIS integration
utils/ Small helpers
This project is open source. See the repository for license details.
