ncurses Spotify client written in Rust using librespot. It is heavily inspired by ncurses MPD clients, such as ncmpc. My motivation was to provide a simple and resource friendly alternative to the official client as well as to support platforms that currently don't have a Spotify client, such as the *BSDs.
rust-xcb
dependency)libpulse-dev
(or portaudio-dev
, if you want to use the PortAudio backend)libncurses-dev
and libssl-dev
libdbus-1-dev
libxcb
+ development headers (for clipboard access)On Debian based systems you need following packages for libxcb
developement headers:
sudo apt install libpulse-dev libssl-dev libxcb1-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev
cargo install ncspot
cargo build --release
ncspot -d debug.log
By default ncspot is built using the Rodio backend. To make it use the
PortAudio backend (e.g. for *BSD or macOS), you need to recompile ncspot with
the portaudio_backend
feature:
cargo run --no-default-features --features
portaudio_backend,cursive/pancurses-backend
These keybindings are hardcoded for now. In the future it may be desirable to have them configurable.
F1
: Queuec
clears the entire queued
deletes the currently selected trackCtrl-s
opens a dialog to save the queue to a playlistF2
: SearchF3
: Libraryd
deletes the currently selected playlistReturn
and queued using Space
s
will save, d
will remove the currently selected track to/from your
libraryo
will open a detail view or context menu for the selected itemShift-o
will open a context menu for the currently playing tracka
will open the album view for the selected itemA
will open the artist view for the selected itemBackspace
closes the current viewShift-p
toggles playback of a trackShift-s
stops a trackShift-r
updates the playlist cache<
and >
play the previous or next track,
and .
to rewind or skip forwardr
to toggle repeat modez
to toggle shuffle playbackq
quits ncspotx
copies a sharable URL of the song to the system clipboardShift-x
copies a sharable URL of the currently selected item to the system clipboardYou can also open a Vim style commandprompt using :
, the following commands
are supported:
quit
: Quit ncspottoggle
: Toggle playbackstop
: Stop playbackprevious
/next
: Play previous/next trackclear
: Clear playlistshare [current | selected]
: Copies a sharable URL of either the selected item or the currernt song to the system clipboardThe screens can be opened with queue
, search
, playlists
and log
, whereas
search
can be supplied with a search term that will be entered after opening
the search view.
Configuration is saved to ~/.config/ncspot/config.toml
. Possible configuration
values are:
proxy
: Set an HTTP proxyuse_nerdfont
: Turn nerdfont glyphs on/off theme
: Set a custom color palette (see below)The color palette can be modified in the configuration. For instance, to have ncspot match Spotify's official client, you can add the following entries to the configuration file:
[theme]
background = "black"
primary = "light white"
secondary = "light black"
title = "green"
playing = "green"
playing_bg = "black"
highlight = "light white"
highlight_bg = "#484848"
error = "light white"
error_bg = "red"
statusbar = "black"
statusbar_progress = "green"
statusbar_bg = "green"
cmdline = "light white"
cmdline_bg = "black"
More examples can be found in pull request https://github.com/hrkfdn/ncspot/pull/40.