Home

Awesome

Spotiqueue

A terribly simple macOS app for keyboard-based, queue-oriented Spotify use. Many years ago i built a version which relied on a now-deprecated library — Spotify doesn't publish libspotify any more, which is a shame. The old Spotiqueue is archived for posterity; this version does pretty much exactly the same as the old one did, and more, although i'd like to think it's a bit more refined.

Spotiqueue now also has support for the GNU Guile extension language built in: this means you can extend its behaviour with arbitrary Scheme! More details below. Beware of rough edges. Scratches my itch, no other guarantees granted.

Obligatory screenshot to give an idea what the app does.

Usage, a crash course

Spotiqueue is intended to be keyboard-driven. As such, you may be surprised that clicking and dragging doesn't work. Read on for instructions!

The left-hand pane is your queue of tracks to be played. The top track is next, and once it has started playing, it's removed from the queue. The right-hand pane is for search results.

Of course, you may want to manipulate the queue.

Note that instead of the arrows, you can use Vim-like movement keys too!

More detail on keybindings

The basic Vim and Emacs movement keys are supported instead of using arrow keys.

KeyDescription
left, right, h, lsearch or queueFocus between search and queue
up, down, j, ksearch or queueMove up or down
/searchFocus the filter field
EntersearchPlace selected items at the top of the queue and immediately play first item
EnterqueuePlay the selected item, removing items above it
⌘F or ⌘LglobalFocus the search bar
⌘QglobalQuit Spotiqueue
⌘OglobalList all of your saved playlists
⌘PglobalList all of your saved tracks
⌘NglobalPlay next track from queue
⌘; or ⌘→search or queueBrowse details of selected item (see description below)
⌘h or ⌘←searchEnqueue selection at the bottom of the queue
⌘⇧h or ⌘⇧←searchEnqueue selection at the top of the queue
?globalShow current track's album in search results
TABglobalCycle focus search field -> search results -> queue
x, d, Delete, BackspacequeueRemove selected item(s) from queue
x, d, Delete, BackspacesearchOnly when viewing user's playlists: delete playlist
⌘SsearchSave current search results to new playlist
⌘SqueueSave current queue to new playlist
^b, ^f, ^u, ^dsearch or queueScroll up/down by full or half page
⌘Csearch or queuePlace highlighted items on clipboard
⌘⇧Csearch or queuePlace highlighted items' album link on clipboard
⌘VqueuePaste items on clipboard into the queue
^⌥sglobalShuffle the contents of the queue

Note:

Browsing details

For any item in a list you can press ⌘; or ⌘→, to "dive deeper". If the item you selected is a track, the search pane will be populated by the album it's on. If you dive deeper after having opened an album, you'll get all the artist's tracks. When playlists are listed in the search results, diving deeper will return all the tracks of the playlist.

But wait, there's more! Or, writing Scheme to extend Spotiqueue

What it currently supports:

If you already know Scheme and just want to get started, place a file in your home directory, and it'll automatically get loaded next time Spotiqueue starts up:

~/.config/spotiqueue/init.scm

For more details, check out the example init.scm file, which i use myself. You'll probably also want to look at the Scheme internals of Spotiqueue.

# To adopt the example config file:
mkdir -p ~/.config/spotiqueue
(cd ~/.config/spotiqueue; ln -sv ~/src/Spotiqueue/examples/paul-config.scm init.scm)

Download and install

If you don't like hassling about with Xcode (quite rightly so), you can find compiled versions on the Github releases page. Unfortunately, for now you need at least macOS 10.15, because the app makes heavy use of the Combine framework.

If you use Homebrew, you can simply run:

brew install --cask toothbrush/toothbrush/spotiqueue

Development

Have a look at HACKING.md for a run-through of the development tools required.

Copyright © 2021 paul at denknerd dot org