Bandcamp in your terminal — browse, discover, and stream music without leaving the command line.
cargo install --git https://github.com/kfcafe/bcRequires mpv for audio playback. Album art renders natively in Kitty, iTerm2, and Sixel terminals — falls back to Unicode half-blocks elsewhere.
Build from source
git clone https://github.com/kfcafe/bc.git
cd bc
cargo install --path .Run subcommands directly without entering the TUI:
bc search "Aphex Twin" # Search Bandcamp
bc album <url> # View album details + tracklist
bc artist <url> # View artist info + discography
bc play <url> # Stream an album or track via mpv
bc play <url> --track 3 # Stream a specific track
bc discover # Browse top releases
bc discover --genre electronic # Filter by genre
bc discover --options # List available genres/sorts
bc daily # Bandcamp Daily headlines
bc daily --read <url> # Read an article
bc download <url> # Download a free/name-your-price album
bc download <url> -f flac # Download in FLAC format
bc download <url> -o ~/Downloads # Download to specific directory
bc tag ambient # Find related tags
bc collection # Browse purchased music
bc wishlist # View wishlist
bc queue # List the playback queue
bc queue rm 3 5 # Remove tracks 3 and 5
bc queue clear # Clear the entire queueLaunch with bc (no arguments). A full Bandcamp browser with four tabs, drill-down views, a playback queue, and a live progress bar.
| Key | Tab | Description |
|---|---|---|
1 |
Daily | Bandcamp Daily articles |
2 |
Discover | Browse by genre and sort |
3 |
Collection | Your purchased music (requires auth) |
4 |
Wishlist | Your wishlist (requires auth) |
Switch tabs with Tab / Shift+Tab or press 1–4 directly.
| Key | Action |
|---|---|
j / k |
Move down / up |
gg |
Jump to top |
G |
Jump to bottom |
Ctrl+d / Ctrl+u |
Half-page down / up |
Enter / l / → |
Open selected item |
Esc / h / ← |
Go back |
/ |
Search |
? |
Help overlay |
q |
Quit |
| Key | Action |
|---|---|
p |
Play / pause |
n |
Next track |
N |
Previous track |
a |
Add selected to queue |
Q |
Open queue view |
x |
Remove track (in queue view) |
c |
Clear queue (press twice to confirm) |
The now-playing bar shows track name, elapsed/total time, and a progress bar. Tracks auto-advance through the queue.
The queue is persistent — saved to ~/.config/bc/queue.json and restored on relaunch.
In the album detail view:
| Key | Action |
|---|---|
d |
Download free/name-your-price album (saved to ~/Music/bc/) |
b |
Open in browser to purchase |
Albums show a pricing badge: FREE, Name Your Price, or the price (e.g. $7.00 USD). Purchased albums show ✓ Purchased.
| Key | Action |
|---|---|
f |
Genre filter popup |
s |
Sort popup |
- Album Detail — Album info, tags, and description on the left; tracklist on the right. Play individual tracks with Enter, queue the whole album with
a. - Artist Detail — Bio and location on the left; discography on the right. Select a release to open it.
- Queue — Full-screen queue. Jump to any track with Enter, remove with
x, clear withc.
For collection and wishlist access, export your identity cookie from bandcamp.com:
bc auth --set "identity=<your-cookie-value>"Scrobble what you listen to in bc to your Last.fm profile.
- Create a Last.fm API account at https://www.last.fm/api/account/create
- Authenticate:
bc lastfm auth --api-key <KEY> --api-secret <SECRET>This opens your browser to authorize bc. Your session is saved to ~/.config/bc/config.toml. You can also set LASTFM_API_KEY and LASTFM_API_SECRET as environment variables.
- Now Playing — sent when a track starts so it appears on your profile in real-time.
- Scrobble — logged after listening to ≥50% of a track (or 4 minutes, whichever comes first). Tracks shorter than 30 seconds are skipped per Last.fm rules.
Scrobbling works automatically in the TUI.
bc lastfm status # Check connection status
bc lastfm logout # Disconnect Last.fmRust · tokio · reqwest · scraper · ratatui · crossterm · mpv IPC · clap