Running Spotify In Your Terminal
Running Spotify In Your Terminal

Running Spotify In Your Terminal


 

Context:

 
I have been a long time user of Spotify-tui but unfortunately looks like it has been abondoned for Homebrew.
The issue is described here.
But looks like all hope is not lost, there is an alternative to listen to spotify while you are in your terminal.
 
spotify_player is written in Rust and is built on top of awesome libraries such as tui-rs, rspotify, librespot, and many more.
 
But please be aware although it looks like a free Spotify account does work, it’s buggy and stops working after sometime. You will require a Premium Account.
 
notion image
 

Installation:

 
If you are on Mac just run the following to install:
brew install spotify_player
 
spotify_player supports streaming, which needs to be built/installed with streaming feature (enabled by default) and with an audio backend (rodio-backend by default). The streaming feature allows to spotify_player to play music directly from terminal.
 
Audio backend
spotify_player uses rodio as the default audio backend. List of available audio backends:
alsa-backend pulseaudio-backend rodio-backend portaudio-backend jackaudio-backend rodiojack-backend sdl-backend gstreamer-backend
 
Use your homebrew to install any of the backends.
 

Configuration

 
Now for the terminal app to work properly you need to register your app with spotify and supply it with a client_id that has basically premium support.
 
Create an app by going here: https://developer.spotify.com/dashboard
If you are unsure how to create an app, check out: https://developer.spotify.com/documentation/web-api/concepts/apps
 
Quick note: I tend to use `http://localhost:3000` as my re-direct URI while creating the app
 
Once your app is created you can go anytime to your App → Settings and copy the client_id
 
In your terminal the configuration file for spotify-player is located at
$HOME/.config/spotify-player/app.toml
 
Edit the .toml file and replace the default client_id with your app’s client_id
Feel free to replace anything else that you want to, like bitrate etc.
 
If you prefer not to include your own client_id directly in your configuration, you can retrieve it at runtime using the:
client_id_command
 
If specified, client_id_command should be an object with two fields command and args, just like player_event_hook_command. For example to read your client_id from a file your could use
client_id_command = { command = "cat", args = ["/path/to/file"] }
 

Commands

 
To go to the shortcut help page, press ? or C-h (default shortcuts for OpenCommandHelp command).
 
List of supported commands:
 
Command
Default Shortcut
NextTrack
n
PreviousTrack
p
ResumePause
space
PlayRandom
.
Repeat
C-r
Shuffle
C-s
VolumeChange
+,-
Mute
_
Quit
C-c, q
Search
/
ClosePopup
<Esc>
BrowseUserPlaylists
u p
 

 
Subscribe to my newsletter to get notification of when I publish next:
 
 
For historical blogs checkout:
 
 
I am also available for chit-chats, discussing security, career switching to cyber security here: