GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - bjarneo/cliamp: cliamp - Terminal music player inspired by winamp

BranchesTags
Open more actions menu

Latest commit

 

History

1,796 Commits
1,796 Commits

Folders and files

NameName
Last commit message
Last commit date
.github
.github
 
 
applog
applog
 
 
cmd
cmd
 
 
config
config
 
 
docs
docs
 
 
external
external
 
 
favorites
favorites
 
 
history
history
 
 
internal
internal
 
 
ipc
ipc
 
 
luaplugin
luaplugin
 
 
lyrics
lyrics
 
 
mediactl
mediactl
 
 
nix
nix
 
 
player
player
 
 
playlist
playlist
 
 
pluginmgr
pluginmgr
 
 
plugins
plugins
 
 
provider
provider
 
 
resolve
resolve
 
 
site
site
 
 
theme
theme
 
 
tracksave
tracksave
 
 
ui
ui
 
 
upgrade
upgrade
 
 
.gitattributes
.gitattributes
 
 
.gitignore
.gitignore
 
 
AGENTS.md
AGENTS.md
 
 
CLAUDE.md
CLAUDE.md
 
 
CNAME
CNAME
 
 
Cliamp.ico
Cliamp.ico
 
 
Cliamp.png
Cliamp.png
 
 
Cliamp.svg
Cliamp.svg
 
 
LICENSE
LICENSE
 
 
Makefile
Makefile
 
 
README.md
README.md
 
 
cliamp.desktop
cliamp.desktop
 
 
cliamp_windows.rc
cliamp_windows.rc
 
 
commands.go
commands.go
 
 
commands_reset_test.go
commands_reset_test.go
 
 
commands_test.go
commands_test.go
 
 
config.toml.example
config.toml.example
 
 
docs_links_test.go
docs_links_test.go
 
 
docs_providers_test.go
docs_providers_test.go
 
 
flake.lock
flake.lock
 
 
flake.nix
flake.nix
 
 
go.mod
go.mod
 
 
go.sum
go.sum
 
 
headless_signal_test.go
headless_signal_test.go
 
 
headless_test.go
headless_test.go
 
 
ipc_client.go
ipc_client.go
 
 
ipc_client_test.go
ipc_client_test.go
 
 
jellyfin_restore_test.go
jellyfin_restore_test.go
 
 
jellyfin_source_test.go
jellyfin_source_test.go
 
 
logo.txt
logo.txt
 
 
lua_wiring.go
lua_wiring.go
 
 
lua_wiring_test.go
lua_wiring_test.go
 
 
lyrion_wiring_test.go
lyrion_wiring_test.go
 
 
main.go
main.go
 
 
main_darwin.go
main_darwin.go
 
 
main_test.go
main_test.go
 
 
mise.toml
mise.toml
 
 
open.go
open.go
 
 
open_test.go
open_test.go
 
 
provider_log_test.go
provider_log_test.go
 
 
providers.go
providers.go
 
 
providers_test.go
providers_test.go
 
 
ytdlp_prompt_test.go
ytdlp_prompt_test.go
 
 

Repository files navigation

Docs on contextowl.co

A retro terminal music player inspired by Winamp. Play local files, streams, podcasts, YouTube, YouTube Music, SoundCloud, Mixcloud, Bilibili, Spotify, Qobuz, Tidal, Bandcamp purchases, NetEase Cloud Music, Yandex Music, Xiaoyuzhou (小宇宙), Navidrome, Lyrion, Plex, Jellyfin, Emby, Audiobookshelf, and Telegram. Use the spectrum visualizer, parametric EQ, and playlists.

cliamp.stream | docs | android | discord

On a phone, run cliamp mobile. It is a native Android client for radio, podcasts, and the same servers this player talks to.

cliamp uses Bubbletea, Lip Gloss, Beep, and go-librespot.

cliamp-promo-github.mp4
Proudly sponsored by contextowl.co

Install

curl -fsSL https://cliamp.stream/install.sh | sh

Homebrew

brew install bjarneo/cliamp/cliamp

The formula installs all required runtime libraries.

Arch Linux (AUR)

yay -S cliamp

Nix

nix run github:bjarneo/cliamp

For a declarative NixOS configuration, add github:bjarneo/cliamp as a flake input. Install its default package:

inputs.cliamp.url = "github:bjarneo/cliamp";

environment.systemPackages = [
  inputs.cliamp.packages.${pkgs.stdenv.hostPlatform.system}.default
];

Go

go install github.com/bjarneo/cliamp@latest

Install ALSA development headers before you build on Linux. See Building from source.

Pre-built binaries

Download from GitHub Releases.

macOS: Pre-built binaries link dynamically to FLAC, Vorbis, Ogg, and mpg123 from Homebrew. If you download from Releases or use install.sh, install these libraries first. Otherwise, you can see errors such as Library not loaded: /opt/homebrew/opt/libvorbis/lib/libvorbisenc.2.dylib:

brew install flac libvorbis libogg mpg123

brew install bjarneo/cliamp/cliamp installs these libraries.

Linux: Pre-built binaries link FLAC, Vorbis, Ogg, and mpg123 statically. No extra codec packages are required. You can still need an ALSA bridge for your sound server. See Troubleshooting.

Windows: Download and extract cliamp-windows-amd64.zip from Releases. It includes the codec DLLs that Spotify requires. On Windows, cliamp stores its config under %APPDATA%\cliamp unless HOME names another directory.

Optional runtime dependencies for all platforms and install methods:

  • ffmpeg for AAC, ALAC, Opus, and WMA playback
  • yt-dlp for YouTube, YouTube Music, SoundCloud, Mixcloud, Bandcamp, Bilibili, and NetEase Cloud Music

On macOS, run brew install ffmpeg yt-dlp. On Linux, use your distribution package manager.

On Windows, install ffmpeg and yt-dlp with your package manager. Keep both on PATH.

Build from source

git clone https://github.com/bjarneo/cliamp.git && cd cliamp && go build -o cliamp .

Quick Start

cliamp ~/Music                     # play a directory
cliamp *.mp3 *.flac               # play files
cliamp https://example.com/stream  # play a URL

Press Ctrl+K to see all keybindings.

Configure remote providers such as Navidrome, Lyrion, Bandcamp, Plex, Jellyfin, Emby, Audiobookshelf, Spotify, Qobuz, Tidal, Mixcloud, YouTube Music, NetEase Cloud Music, and Telegram with the interactive wizard:

cliamp setup

The wizard guides you through each provider. It writes the provider keys into the section of that provider in your config file (~/.config/cliamp/config.toml, or %APPDATA%\cliamp\config.toml on Windows unless HOME names another directory). It keeps your other keys and comments. It validates supported server connections during setup. The OAuth providers Spotify, Qobuz and Tidal sign in later in the player, and Telegram offers the sign-in right after saving. Mixcloud checks optional browser-session or OAuth credentials when you use them. See docs/cli.md for details.

See the Mixcloud provider guide for discovery, account, creator/show, genre search, local genre favorites, authentication, signed-in playback, resume, seeking, and limitations.

For podcast discovery and subscriptions, run cliamp --provider podcast. Browse Apple's top 100 shows and 19 categories, search with / then Enter, and subscribe with f. No account or API key is needed. See the Podcasts guide.

Remote Control

Control a running cliamp from a script, a status bar, or a key binding:

cliamp toggle
cliamp next
cliamp status --json

Media keys work through MPRIS on Linux, Now Playing on macOS, and global hotkeys on Windows.

Run cliamp --daemon to play without a TUI. Headless mode runs the same player as the TUI. It loads your Lua plugins, reports plays to Navidrome, Jellyfin, and the other providers that take play reports, and adds each track to Recently Played when the track starts. See docs/headless.md and docs/remote-control.md.

Radio

Press R in the player to browse about 58,000 online radio stations in the Radio Browser directory.

Cut that down by location or genre: N browses by country, Browse genres & tags opens the directory's complete tag index, and / filters either list. f pins the countries you listen to, and Enter on a country or tag loads its stations as a playlist. cliamp does not work out where you are unless you pick "Use my location" and accept; it then reads your country from the system timezone, never from a geo-IP service. See docs/radio.md.

Add your own stations to ~/.config/cliamp/radios.toml (or %APPDATA%\cliamp\radios.toml on Windows unless HOME names another directory). See docs/configuration.md.

To host a radio station, use cliamp-server.

Building from source

Prerequisites:

  • Go 1.26.10 or later
  • ALSA development headers (Linux only, required by the audio backend)

Linux (Debian/Ubuntu):

sudo apt install libasound2-dev libflac-dev libvorbis-dev libogg-dev libmpg123-dev

Linux (Fedora):

sudo dnf install alsa-lib-devel flac-devel libvorbis-devel libogg-devel mpg123-devel

Linux (Arch):

sudo pacman -S alsa-lib flac libvorbis libogg mpg123

macOS:

brew install flac libvorbis libogg mpg123 pkg-config

Windows source builds: Every Windows source build needs CGO and the MSYS2 MinGW64 toolchain because the Spotify provider is compiled in even when it is not configured. ffmpeg.exe and yt-dlp.exe remain optional runtime dependencies for the same formats and providers as other platforms.

  1. Install MSYS2.

  2. Open the MSYS2 MinGW64 terminal, not the standard MSYS2 terminal. Install the toolchain and codec libraries:

    pacman -S make \
      mingw-w64-x86_64-gcc mingw-w64-x86_64-go mingw-w64-x86_64-pkg-config \
      mingw-w64-x86_64-libogg mingw-w64-x86_64-libvorbis \
      mingw-w64-x86_64-flac mingw-w64-x86_64-mpg123

    To check if Go was installed correctly, run

    go env GOROOT

    If the command causes the error go: cannot find GOROOT directory: 'go' binary is trimmed and GOROOT is not set, it means that the enviroment GOROOT variable has to be manually set:

    export GOROOT=/mingw64/lib/go

    Now, when running go env GOROOT, the output should be: <mtsys2-install-folder>/mingw64/lib/go

  3. In that MinGW64 terminal, build with CGO enabled. This keeps gcc and pkg-config on PATH:

    CGO_ENABLED=1 go build -o cliamp.exe .

    Some MSYS2 libogg builds provide libogg-0.dll without ogg_stream_iovecin in its export table. The static libogg.a has this symbol. If linking fails with undefined reference to 'ogg_stream_iovecin', use static linking for this library only:

    CGO_LDFLAGS="-Wl,-Bstatic -logg -Wl,-Bdynamic" CGO_ENABLED=1 go build -o cliamp.exe .
  4. cliamp.exe links dynamically to codec and MinGW runtime DLLs. Keep C:\msys64\mingw64\bin on PATH at runtime, or copy each /mingw64/bin/*.dll that ldd cliamp.exe shows next to cliamp.exe.

Clone and build:

git clone https://github.com/bjarneo/cliamp.git
cd cliamp
make && make install

Or without Make: go build -o cliamp .

make install places the binary in ~/.local/bin/.

A source build uses the same optional runtime dependencies as the other install methods. See Install.

Docs

Full documentation is hosted at whiterose.org.contextowl.co/docs/cliamp.

Troubleshooting

No audio output

cliamp reports audio output unavailable when it cannot open an output device. On Linux systems that use PipeWire or PulseAudio, the cliamp ALSA backend needs a bridge package to route audio through the sound server:

  • PipeWire: pipewire-alsa
  • PulseAudio: pulseaudio-alsa (libasound2-plugins on Debian/Ubuntu)

Install the package for your system:

# PipeWire (Arch)
sudo pacman -S pipewire-alsa

# PulseAudio (Arch)
sudo pacman -S pulseaudio-alsa

# Debian/Ubuntu (PipeWire)
sudo apt install pipewire-alsa

# Debian/Ubuntu (PulseAudio, including WSL2)
sudo apt install libasound2-plugins

On WSL2 see WSL2 setup for the extra ALSA routing step.

Author

x.com/iamdothash

Disclaimer

Use this software at your own risk. The authors are not responsible for damage or issues that result from its use.

About

cliamp - Terminal music player inspired by winamp

www.cliamp.stream

Topics

cliampicecasticecast-playerjellyfin-clientm3umusicmusic-playernavidromenavidrome-clientplex-clientplugin-systempodcastradiosoundcloudspotifystreamwinampyoutubeyt-dlp

Resources

Readme
MIT license
Activity

Stars

4.6k stars

Watchers

16 watching

Forks

343 forks
Report repository

Releases

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.