# Miniplayer

A curses based mpd client with basic functionality and album art.

![player-preview](https://github.com/GuardKenzie/miniplayer/blob/main/img/preview.png?raw=true)

After installation, the player can be opened from the terminal with `miniplayer`.

## Installation

This package can be installed by:
1. Cloning this repository to your computer and running
```
python setup.py install
```
2. Through PyPi with
```
pip install miniplayer
```
3. By installing the `miniplayer-git` package with your AUR package manager of choice.

## Configuration

The config file is located at `~/.config/miniplayer/config`. The example configuration file, [`config.example`](config.example), has all the default values. You will need to create the file yourself.

#### player
* ***font_width*:** The width of your font in pixels in the actual terminal.
* ***font_height*:** The height of your font in pixels in the actual terminal.

    ![font-example](https://github.com/GuardKenzie/miniplayer/blob/main/img/font.png?raw=true)

* ***volume_step*:** The ammount (in percents) the volume will be adjusted on pressing the volume up and volume down keys.
* ***album_art_only*:** Whether or not to only draw the album art and no other track info (`true/false`).
* ***auto_close*:** Whether or not to automatically close the player once the mpd playlist has concluded (`true/false`).
* ***show_playlist*:** Whether or not to show the playlist view.

#### art
* ***music_directory*:** The path to your music directory for extracting album art from the files.
* ***http_base_url*:** Base URL of webserver which serves the album art for your albums (takes precedence over `music_directory`). Useful for users of Android MPD clients _MAFA_ or _MPDroid_. For more information see [the MPDroid wiki](https://github.com/abarisain/dmix/wiki/Album-Art-on-your-LAN).
* ***http_cover_filenames*:** Space separated list of filenames to use in the call to the webserver to fetch the album art.
* ***image_method*:** The method to use for drawing album art. Available values are `pixcat` and `ueberzug`
    If you are not using Kitty, try `ueberzug`.

#### mpd
* ***host*:** The mpd host
* ***port*:** The mpd port
* ***pass*:** The mpd password


#### keybindings
This section allows you to change the keybinds for the player. The format for a keybind is `key = action` (for example `p = play_pause` or `left = last_track`). Available actions are
* `play_pause`
* `next_track`
* `last_track`
* `volume_down`
* `volume_up`
* `toggle_info`
* `help`
* `quit`
* `select_down`
* `select_up`
* `select`


#### theme
This section allows you to customise the colors and progress bar
* ***accent_color*:** The color to use for selections in the playlist 
* ***bar_color*:** The color for the progress bar 
* ***time_color*:** The color for the time stamp
* ***bar_body*:** A single character to use for the body of the progress bar
* ***bar_head*:** A single character to use for the head of the progress bar

The following terminal colors can be used:
* `black`
* `red`
* `green`
* `yellow`
* `blue`
* `magenta`
* `cyan`
* `white`
* `auto`

If the `auto` color is specified, the player will try to determine the dominant color in the album art and use that.


## Default keybinds

| Key   | function           |
| ----- | ------------------ |
| h     | Show keybinds      |
| p     | Play/pause         |
| >     | Next track         |
| <     | Last track         |
| q     | Quit               |
| +     | Volume up          |
| -     | Volume down        |
| i     | Toggle info        |
| Up    | Selection up       |
| Down  | Selection down     |
| Enter | Play selected song |

These keybinds can be changed by editing the config file. See the [`config.example`](config.example) file for the format.
    

## F.A.Q.
- **Q:** Album art is not showing up.  
   **A:** If you're using `music_directory` for fetching your album art, make sure your it is not quoted i.e. if your music directory is `~/My Music` then your config should look like `music_directory = ~/My Music`.  
   If this does not work, try changing `image_method` from `pixcat` to `ueberzug` or vice versa.

- **Q:** Album art is too big/too small.  
   **A:** You need to configure `font_height` and `font_width`. Their values should be the actual pixel height and width of a character in your terminal.


## More screenshots!

![playlist](img/playlist.png)