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
- Gozik Playlist(Multi Origin Playback Support)
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. Cross-built AppImages always use an FFmpeg binary matching their target architecture.
A cross-platform web-based installer is included under installer/. It downloads the matching release payload from GitHub and installs Gozik for the current user without administrator privileges.
make installer-allBinaries are written to installer/dist/:
gozik-installer-linux-amd64gozik-installer-linux-arm64gozik-installer-linux-riscv64gozik-installer-macos-arm64gozik-installer-windows-amd64.exegozik-installer-windows-arm64.exe
The release also provides gozik-windows-amd64.exe and gozik-windows-arm64.exe. Each file contains Gozik, GTK, FFmpeg, image loaders, and UI assets, so no separate runtime installation is required. On first launch, the executable unpacks its runtime into the current user's cache and starts Gozik.
Running an installer binary starts a local web server and opens the setup wizard in your default browser:
./installer/dist/gozik-installer-linux-amd64The wizard lets you choose the version to install, pick an installation directory (via a native folder picker), and optionally add Gozik to PATH or create shortcuts on Windows.
For CI or automated installs, use the command-line flags:
./gozik-installer-linux-amd64 -headless -version latest -dir "$HOME/.local/share/gozik"On Windows you can also enable -add-to-path and -create-shortcut.
The Release workflow builds payload archives and installer binaries for every supported platform and uploads them to the GitHub release automatically. See .github/workflows/release.yml.
./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
Choose Music Provider → Install / Manage Plugins to download, install, update, and configure the official Spotify and YouTube Music plugins without leaving Gozik. Gozik v0.6 pins Spotify v0.6 and YouTube Music v0.5; plugin packages are built from those exact tags rather than their moving default branches.
The prebuilt packages include their required runtimes, including yt-dlp, Python, and Node.js where applicable. Windows uses UAC for the official installer or service registration. macOS requests administrator access only to copy the app into /Applications, then registers a user LaunchAgent; Xcode and developer toolkits are not required.
Spotify configuration requires a Client ID from the Spotify Developer Dashboard with http://127.0.0.1:43827/callback registered as a redirect URI. YouTube Music supports OAuth device login and browser-cookie login.
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.
