# Spotify Shell


![demo](./demo.gif)

## Features

1. Supports following commands (same as `sp` client):
    - `play`/`pause`/`next`;
    - any other string will start a search and play the first result for a given search query;
    - feh - shows the current artwork with `feh`;

1. Stores history and allows navigate through it;

1. Highly customizable

## Controls

Keyboard navigation (copied from [`awful.prompt`](https://awesomewm.org/doc/api/libraries/awful.prompt.html) API documentation page):

| Name | Usage |
|---|---|
| CTRL+A | beginning-of-line |
| CTRL+B | backward-char |
| CTRL+C | cancel |
| CTRL+D | delete-char |
| CTRL+E | end-of-line |
| CTRL+J | accept-line |
| CTRL+M | accept-line |
| CTRL+F | move-cursor-right |
| CTRL+H | backward-delete-char |
| CTRL+K | kill-line |
| CTRL+U | unix-line-discard |
| CTRL+W | unix-word-rubout |
| CTRL+BACKSPAC | unix-word-rubout |
| SHIFT+INSERT | paste |
| HOME | beginning-of-line |
| END | end-of-line |
| CTRL+R | reverse history search, matches any history entry containing search term. |
| CTRL+S | forward history search, matches any history entry containing search term. |
| CTRL+UP | ZSH up line or search, matches any history entry starting with search term. |
| CTRL+DOWN | ZSH down line or search, matches any history entry starting with search term. |
| CTRL+DELETE | delete the currently visible history entry from history file. This does not delete new commands or history entries under user editing. |


## Installation

1. Install [sp](https://gist.github.com/streetturtle/fa6258f3ff7b17747ee3) - CLI client for [Spotify for Linux](https://www.spotify.com/ca-en/download/linux/):

    ```bash
    $ sudo git clone https://gist.github.com/fa6258f3ff7b17747ee3.git ~/dev/
    $ sudo ln -s ~/dev/sp /usr/local/bin/
    ```

    Check if it works by running `sp help`.

1. Get an 'id' and 'secret' from [developer.spotify.com](https://beta.developer.spotify.com/documentation/general/guides/app-settings/) and paste it in the header of the `sp` (`SP_ID` and `SP_SECRET`) - this enables search feature.

1. Clone this repo under **~/.config/awesome/**

1. Require spotify-shell at the beginning of **rc.lua**:

    ```lua
    local spotify_shell = require("awesome-wm-widgets.spotify-shell.spotify-shell")
    ```

1. Add a shortcut which will show Spotify Shell widget:

    ```lua
    awful.key({ modkey,        }, "d", function () spotify_shell.launch() end, {description = "spotify shell", group = "music"}),
    ```

1. It uses icon from [Papirus Icon Theme](https://github.com/PapirusDevelopmentTeam/papirus-icon-theme). So you should either install this icon theme, or download an icon you want to use and provide path to it in **spotify-shell.lua**.
