spotify_player is a fast, easy to use, and configurable terminal music player.
spotify_player is a fast, easy-to-use, and configurable terminal music player designed to provide a seamless Spotify experience directly from your command line.
Key Features:
Minimalist UI with an intuitive paging and popup system for navigation.
Full feature parity with the official Spotify application, including playlist management and search functionality.
Support for streaming songs directly from the terminal using librespot technology.
Synced lyrics display for enhanced listening experience.
Cross-platform media control support via MPRIS DBus on Linux and OS window event listeners on Windows and macOS.
Image rendering capabilities in terminals like Kitty and iTerm2, with optional sixel support for improved visual quality.
Audience & Benefit:
Ideal for users who value a distraction-free listening experience while maintaining full control over their Spotify library. spotify_player offers an efficient and immersive way to interact with your music directly from the terminal, eliminating the need for additional desktop applications.
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
Git for Windows focuses on offering a lightweight, native set of tools that bring the full feature set of the Git SCM to Windows while providing appropriate user interfaces for experienced Git users and novices alike.
With Spotify, it’s easy to find the right music or podcast for every moment – on your phone, your computer, your tablet and more.
There are millions of tracks and episodes on Spotify. So whether you’re behind the wheel, working out, partying or relaxing, the right music or podcast is always at your fingertips. Choose what you want to listen to, or let Spotify surprise you.
You can also browse through the collections of friends, artists, and celebrities, or create a radio station and just sit back.
GitHub CLI (gh) is a command-line tool that brings pull requests, issues, GitHub Actions, and other GitHub features to your terminal, so you can do all your work in one place.
The K-Lite Codec Pack is a collection of DirectShow filters, VFW/ACM codecs, and tools. Codecs and DirectShow filters are needed for encoding and decoding audio and video formats. The K-Lite Codec Pack is designed as a user-friendly solution for playing all your audio and movie files. With the K-Lite Codec Pack you should be able to play all the popular audio and video formats and even several less common formats.
There are four variants of the K-Lite Codec Pack:
The basic variant contains everything you need to play all the common video file formats. Such as AVI, MKV, MP4, OGM, and FLV. This pack is for those who like a small no-nonsense pack. It is small, but powerful.
The standard variant contains a few additional features compared to the basic variant. It contains Media Player Classic, which is an excellent player for video files. This pack is recommended for the average user.
The full variant has some extras compared to the standard variant. It additionally contains GraphStudioNext, and a few extra DirectShow filters.
The mega variant is the most complete pack. It additionally contains VFW/ACM codecs for video encoding/editing.
For detailed tables with comparisons of the abilities and contents of the different variants of the codec pack, have a look at the comparison of abilities and comparison of contents pages.
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
Git for Windows focuses on offering a lightweight, native set of tools that bring the full feature set of the Git SCM to Windows while providing appropriate user interfaces for experienced Git users and novices alike.
With Spotify, it’s easy to find the right music or podcast for every moment – on your phone, your computer, your tablet and more.
There are millions of tracks and episodes on Spotify. So whether you’re behind the wheel, working out, partying or relaxing, the right music or podcast is always at your fingertips. Choose what you want to listen to, or let Spotify surprise you.
You can also browse through the collections of friends, artists, and celebrities, or create a radio station and just sit back.
GitHub CLI (gh) is a command-line tool that brings pull requests, issues, GitHub Actions, and other GitHub features to your terminal, so you can do all your work in one place.
The K-Lite Codec Pack is a collection of DirectShow filters, VFW/ACM codecs, and tools. Codecs and DirectShow filters are needed for encoding and decoding audio and video formats. The K-Lite Codec Pack is designed as a user-friendly solution for playing all your audio and movie files. With the K-Lite Codec Pack you should be able to play all the popular audio and video formats and even several less common formats.
There are four variants of the K-Lite Codec Pack:
The basic variant contains everything you need to play all the common video file formats. Such as AVI, MKV, MP4, OGM, and FLV. This pack is for those who like a small no-nonsense pack. It is small, but powerful.
The standard variant contains a few additional features compared to the basic variant. It contains Media Player Classic, which is an excellent player for video files. This pack is recommended for the average user.
The full variant has some extras compared to the standard variant. It additionally contains GraphStudioNext, and a few extra DirectShow filters.
The mega variant is the most complete pack. It additionally contains VFW/ACM codecs for video encoding/editing.
For detailed tables with comparisons of the abilities and contents of the different variants of the codec pack, have a look at the comparison of abilities and comparison of contents pages.
Application's prebuilt binaries can be found in the Releases Page.
Note: to run the application, Linux systems need to install additional dependencies as specified in the Dependencies section.
Homebrew
Run brew install spotify_player to install the application.
Scoop
Run scoop install spotify-player to install the application.
Cargo
Run cargo install spotify_player --locked to install the application from crates.io.
Arch Linux
Run pacman -S spotify-player to install the application.
Note: Defaults to PulseAudio / Pipewire audio backend. For a different one, please consider modifying the official PKGBUILD and rebuilding it manually. See Audio Backends for a list of options.
Void Linux
Run xbps-install -S spotify-player to install the application.
FreeBSD
Run pkg install spotify-player to install the spotify_player binary from FreeBSD ports.
NetBSD
Using the package manager, run pkgin install spotify-player to install from the official repositories.
Building from source,
cd /usr/pkgsrc/audio/spotify-player
make install
NixOS
spotify-player is available as a Nix package and can be installed via nix-shell -p spotify-player or as part of your system configuration.
If you want to build the source locally you can run nix-shell in the root of a checkout of the source code. The provided shell.nix file will install the build prerequisites.
Docker
Note: streaming feature is disabled when using the docker image.
You can download the binary image of the latest build from the master branch by running
docker pull aome510/spotify_player:latest
then run
docker run --rm -it aome510/spotify_player:latest
to run the application.
You can also use your local config folder to configure the application or your local cache folder to store the application's cache data when running the docker image:
Upon running spotify_player with a user-provided client_id, user will be prompted to authenticate the app described earlier. NOTE that this prompt is different from the prompt to authenticate spotify_player. Upon accepting the authentication request, spotify_player will retrieve an access token of the app to finish setting up the integration.
After the user-provided client is successfully integrated, press D (default shortcut for SwitchDevice command) to get the list of available devices, then press enter (default shortcut for ChooseSelected command) to connect to the selected device.
Streaming
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.
The application uses librespot library to create an integrated Spotify client while running. The integrated client will register a Spotify speaker device under the spotify-player name, which is accessible on the Spotify connect device list.
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
User can change the audio backend when building/installing the application by specifying the --features option. For example, to install spotify_player with pulseaudio-backend, run
To enable media control support, spotify_player needs to be built/installed with media-control feature (enabled by default) and set the enable_media_control config option to true in the general configuration file.
Media control support is implemented using MPRIS DBus on Linux and OS window event listener on Windows and MacOS.
Image
To enable image rendering support, spotify_player needs to be built/installed with image feature (disabled by default). To install the application with image feature included, run:
cargo install spotify_player --features image
spotify_player supports rendering image in a full resolution if the application is run on either Kitty or iTerm2. Otherwise, the image will be displayed as block characters.
spotify_player also supports rendering images with sixel behind sixel feature flag, which also enables image feature:
cargo install spotify_player --features sixel
Notes:
Not all terminals supported by libsixel are supported by spotify_player as it relies on a third-party library for image rendering. A possible list of supported terminals can be found in here.
Images rendered by sixel can have a weird scale. It's recommended to tweak the cover_img_scale config option to get the best result as the scaling works differently with different terminals and fonts.
Examples of image rendering:
iTerm2:
Kitty:
Sixel (foot terminal, cover_img_scale=1.8):
Others:
Pixelate
If your terminal supports high-res images, but you like the pixelated look you can enable the pixelate feature, which also enables the image feature:
cargo install spotify_player --features pixelate
The amount of pixels can be tweaked via the cover_img_pixels config option.
cover_img_pixels
8
16
32
64
example
To temporarily disable the pixelate feature just set cover_img_pixels to a high value like 512.
Notify
To enable desktop notification support, spotify_player needs to be built/installed with notify feature (disabled by default). To install the application with notify feature included, run:
cargo install spotify_player --features notify
Note: the notification support in MacOS and Windows are quite restricted compared to Linux.
Mouse support
Currently, the only supported use case for mouse is to seek to a position of the current playback by left-clicking to such position in the playback's progress bar.
Daemon
To enable a daemon support, spotify_player needs to be built/installed with daemon feature (disabled by default). To install the application with daemon feature included, run:
cargo install spotify_player --features daemon
You can run the application as a daemon by specifying the -d or --daemon option: spotify_player -d.
Notes:
daemon feature is not supported on Windows
daemon feature requires the streaming feature to be enabled and the application to be built with an audio backend
because of the OS's restrictions, daemon feature doesn't work with the media-control feature on MacOS, which is enabled by default. In other words, if you want to use the daemon feature on MacOS, you must install the application with media-control feature disabled:
For more details, run spotify_player -h or spotify_player {command} -h, in which {command} is a CLI command.
Notes
When using the CLI for the first time, you'll need to run spotify_player authenticate to authenticate the application beforehand.
Under the hood, CLI command is handled by sending requests to a spotify_player client socket running on port client_port, a general application configuration with a default value of 8080. If there is no running application's instance, a new client will be created upon handling the CLI commands, which increases the latency of the command.
Scripting
The spotify_player command-line interface makes scripting easy.
With the search subcommand, you can search Spotify and retrieve data in JSON format, enabling queries with tools like jq.
Here’s an example of starting playback for the first track from a search query:
To go to the shortcut help page, press ? or C-h (default shortcuts for OpenCommandHelp command).
Tips:
you can search in the shortcut help page (and some other pages) using Search command
RefreshPlayback can be used to manually update the playback status.
RestartIntegratedClient is useful when user wants to switch to another audio device (headphone, earphone, etc) without restarting the application, as the integrated client will be re-initialized with the new device.
List of supported commands:
Command
Description
Default shortcuts
NextTrack
next track
n
PreviousTrack
previous track
p
ResumePause
resume/pause based on the current playback
space
PlayRandom
play a random track in the current context
.
Repeat
cycle the repeat mode
C-r
ToggleFakeTrackRepeatMode
toggle fake track repeat mode
M-r
Shuffle
toggle the shuffle mode
C-s
VolumeChange
change playback volume by an offset (default shortcuts use 5%)
+, -
Mute
toggle playback volume between 0% and previous level
_
SeekForward
seek forward by 5s
>
SeekBackward
seek backward by 5s
<
Quit
quit the application
C-c, q
ClosePopup
close a popup
esc
SelectNextOrScrollDown
select the next item in a list/table or scroll down (supports vim-style count: 5j)
j, C-n, down
SelectPreviousOrScrollUp
select the previous item in a list/table or scroll up (supports vim-style count: 10k)
k, C-p, up
PageSelectNextOrScrollDown
select the next page item in a list/table or scroll a page down (supports vim-style count: 3C-f)
page_down, C-f
PageSelectPreviousOrScrollUp
select the previous page item in a list/table or scroll a page up (supports vim-style count: 2C-b)
page_up, C-b
SelectFirstOrScrollToTop
select the first item in a list/table or scroll to the top
g g, home
SelectLastOrScrollToBottom
select the last item in a list/table or scroll to the bottom
G, end
ChooseSelected
choose the selected item
enter
RefreshPlayback
manually refresh the current playback
r
RestartIntegratedClient
restart the integrated client (streaming feature only)
R
ShowActionsOnSelectedItem
open a popup showing actions on a selected item
g a, C-space
ShowActionsOnCurrentTrack
open a popup showing actions on the current track
a
AddSelectedItemToQueue
add the selected item to queue
Z, C-z
FocusNextWindow
focus the next focusable window (if any)
tab
FocusPreviousWindow
focus the previous focusable window (if any)
backtab
SwitchTheme
open a popup for switching theme
T
SwitchDevice
open a popup for switching device
D
Search
open a popup for searching in the current page
/
BrowseUserPlaylists
open a popup for browsing user's playlists
u p
BrowseUserFollowedArtists
open a popup for browsing user's followed artists
u a
BrowseUserSavedAlbums
open a popup for browsing user's saved albums
u A
CurrentlyPlayingContextPage
go to the currently playing context page
g space
TopTrackPage
go to the user top track page
g t
RecentlyPlayedTrackPage
go to the user recently played track page
g r
LikedTrackPage
go to the user liked track page
g y
LyricsPage
go to the lyrics page of the current track
g L, l
LibraryPage
go to the user library page
g l
SearchPage
go to the search page
g s
BrowsePage
go to the browse page
g b
Queue
go to the queue page
z
OpenCommandHelp
go to the command help page
?, C-h
PreviousPage
go to the previous page
backspace, C-q
OpenSpotifyLinkFromClipboard
open a Spotify link from clipboard
O
SortTrackByTitle
sort the track table (if any) by track's title
s t
SortTrackByArtists
sort the track table (if any) by track's artists
s a
SortTrackByAlbum
sort the track table (if any) by track's album
s A
SortTrackByAddedDate
sort the track table (if any) by track's added date
s D
SortTrackByDuration
sort the track table (if any) by track's duration
s d
SortLibraryAlphabetically
sort the library alphabetically
s l a
SortLibraryByRecent
sort the library (playlists and albums) by recently added items
s l r
ReverseOrder
reverse the order of the track table (if any)
s r
MovePlaylistItemUp
move playlist item up one position
C-k
MovePlaylistItemDown
move playlist item down one position
C-j
CreatePlaylist
create a new playlist
N
JumpToCurrentTrackInContext
jump to the current track in the context
g c
JumpToHighlightTrackInContext
jump to the currently highlighted search result in the context
C-g
To add new shortcuts or modify the default shortcuts, please refer to the keymaps section in the configuration documentation.
Actions
A general list of actions is available; however, not all Spotify items (track, album, artist, or playlist) implement each action. To get the list of available actions on an item, call the ShowActionsOnCurrentTrack command or the ShowActionsOnSelectedItem command, then press enter (default binding for the ChooseSelected command) to initiate the selected action. Some actions may not appear in the popup but can be bound to a shortcut.
List of available actions:
GoToArtist
GoToAlbum
GoToRadio
AddToLibrary
AddToPlaylist
AddToQueue
AddToLiked
DeleteFromLiked
DeleteFromLibrary
DeleteFromPlaylist
ShowActionsOnAlbum
ShowActionsOnArtist
ShowActionsOnShow
ToggleLiked
CopyLink
Follow
Unfollow
These actions can also be bound to a shortcut. To add new shortcuts, please refer to the actions section in the configuration documentation.
Search Page
When first entering the search page, the application focuses on the search input. User can then input text, delete one character backward using backspace, or search the text using enter.
To move the focus from the search input to the other windows such as track results, album results, etc, use FocusNextWindow or FocusPreviousWindow.
Configurations
By default, spotify_player will look into $HOME/.config/spotify-player for application's configuration files. This can be changed by either specifying -c or --config-folder option.
If an application configuration file is not found, one will be created with default values.
By default, spotify_player will look into $HOME/.cache/spotify-player for application's cache files, which include log files, Spotify's authorization credentials, audio cache files, etc. This can be changed by either specifying -C or --cache-folder option.
Logging
The application stores logs inside the $APP_CACHE_FOLDER/spotify-player-*.log file. For debugging or submitting an issue, user can also refer to the backtrace file in $APP_CACHE_FOLDER/spotify-player-*.backtrace, which includes the application's backtrace in case of panics/unexpected errors.
spotify_player uses RUST_LOG environment variable to define the application's logging level. RUST_LOG is default to be spotify_player=INFO, which only shows the application's logs.
NuGet is the package manager for .NET. It enables developers to create, share, and consume useful .NET libraries. NuGet client tools provide the ability to produce and consume these libraries as "packages".
NuGet is the package manager for .NET. It enables developers to create, share, and consume useful .NET libraries. NuGet client tools provide the ability to produce and consume these libraries as "packages".
The Azure command-line interface (Azure CLI) is a set of commands used to create and manage Azure resources. The Azure CLI is available across Azure services and is designed to get you working quickly with Azure, with an emphasis on automation.
The Azure command-line interface (Azure CLI) is a set of commands used to create and manage Azure resources. The Azure CLI is available across Azure services and is designed to get you working quickly with Azure, with an emphasis on automation.
The AWS CLI is an open source tool built on top of the AWS SDK for Python (Boto) that provides commands for interacting with AWS services.
With minimal configuration, you can start using all of the functionality provided by the AWS Management Console from your favorite terminal program.
The AWS CLI is an open source tool built on top of the AWS SDK for Python (Boto) that provides commands for interacting with AWS services.
With minimal configuration, you can start using all of the functionality provided by the AWS Management Console from your favorite terminal program.
zoxide is a smarter cd command, inspired by z and autojump. It remembers which directories you use most frequently, so you can "jump" to them in just a few keystrokes. zoxide works on all major shells.
zoxide is a smarter cd command, inspired by z and autojump. It remembers which directories you use most frequently, so you can "jump" to them in just a few keystrokes. zoxide works on all major shells.
iTunes is the easiest way to enjoy everything you need to be entertained — music, films and TV programmes — and keep it all easily organised. Rent or buy films, download your favourite TV programmes and more.
iTunes is also home to Apple Music, where you can listen to millions of songs and your entire music library — ad-free. Plus, download your favourite music to listen without Wi-Fi. Try it free with no commitment, and cancel anytime.
iTunes is the easiest way to enjoy everything you need to be entertained — music, films and TV programmes — and keep it all easily organised. Rent or buy films, download your favourite TV programmes and more.
iTunes is also home to Apple Music, where you can listen to millions of songs and your entire music library — ad-free. Plus, download your favourite music to listen without Wi-Fi. Try it free with no commitment, and cancel anytime.
The K-Lite Codec Pack is a collection of DirectShow filters, VFW/ACM codecs, and tools. Codecs and DirectShow filters are needed for encoding and decoding audio and video formats. The K-Lite Codec Pack is designed as a user-friendly solution for playing all your audio and movie files. With the K-Lite Codec Pack you should be able to play all the popular audio and video formats and even several less common formats.
There are four variants of the K-Lite Codec Pack:
The basic variant contains everything you need to play all the common video file formats. Such as AVI, MKV, MP4, OGM, and FLV. This pack is for those who like a small no-nonsense pack. It is small, but powerful.
The standard variant contains a few additional features compared to the basic variant. It contains Media Player Classic, which is an excellent player for video files. This pack is recommended for the average user.
The full variant has some extras compared to the standard variant. It additionally contains GraphStudioNext, and a few extra DirectShow filters.
The mega variant is the most complete pack. It additionally contains VFW/ACM codecs for video encoding/editing.
For detailed tables with comparisons of the abilities and contents of the different variants of the codec pack, have a look at the comparison of abilities and comparison of contents pages.
The K-Lite Codec Pack is a collection of DirectShow filters, VFW/ACM codecs, and tools. Codecs and DirectShow filters are needed for encoding and decoding audio and video formats. The K-Lite Codec Pack is designed as a user-friendly solution for playing all your audio and movie files. With the K-Lite Codec Pack you should be able to play all the popular audio and video formats and even several less common formats.
There are four variants of the K-Lite Codec Pack:
The basic variant contains everything you need to play all the common video file formats. Such as AVI, MKV, MP4, OGM, and FLV. This pack is for those who like a small no-nonsense pack. It is small, but powerful.
The standard variant contains a few additional features compared to the basic variant. It contains Media Player Classic, which is an excellent player for video files. This pack is recommended for the average user.
The full variant has some extras compared to the standard variant. It additionally contains GraphStudioNext, and a few extra DirectShow filters.
The mega variant is the most complete pack. It additionally contains VFW/ACM codecs for video encoding/editing.
For detailed tables with comparisons of the abilities and contents of the different variants of the codec pack, have a look at the comparison of abilities and comparison of contents pages.
The K-Lite Codec Pack is a collection of DirectShow filters, VFW/ACM codecs, and tools. Codecs and DirectShow filters are needed for encoding and decoding audio and video formats. The K-Lite Codec Pack is designed as a user-friendly solution for playing all your audio and movie files. With the K-Lite Codec Pack you should be able to play all the popular audio and video formats and even several less common formats.
There are four variants of the K-Lite Codec Pack:
The basic variant contains everything you need to play all the common video file formats. Such as AVI, MKV, MP4, OGM, and FLV. This pack is for those who like a small no-nonsense pack. It is small, but powerful.
The standard variant contains a few additional features compared to the basic variant. It contains Media Player Classic, which is an excellent player for video files. This pack is recommended for the average user.
The full variant has some extras compared to the standard variant. It additionally contains GraphStudioNext, and a few extra DirectShow filters.
The mega variant is the most complete pack. It additionally contains VFW/ACM codecs for video encoding/editing.
For detailed tables with comparisons of the abilities and contents of the different variants of the codec pack, have a look at the comparison of abilities and comparison of contents pages.