Skip to content

Commit

Permalink
readme overhaul
Browse files Browse the repository at this point in the history
  • Loading branch information
spezifisch committed Aug 5, 2024
1 parent 381ce42 commit a84b249
Show file tree
Hide file tree
Showing 2 changed files with 93 additions and 60 deletions.
149 changes: 91 additions & 58 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,109 +1,142 @@
# STMPS (Subsonic Terminal Music Player S)

A terminal client for *sonic music servers. Inspired by ncmpcpp and musickube.
A terminal client for *sonic music servers, inspired by ncmpcpp and musickube.

## Features

* browse by folder
* queue songs and albums
* create and play playlists
* favorites
* volume control
* server-side scrobbling (e.g. on Navidrome, gonic)
* [MPRIS2](https://mpris2.readthedocs.io/en/latest/) control
- Browse by folder
- Queue songs and albums
- Create and play playlists
- Mark favorites
- Volume control
- Server-side scrobbling (e.g., on Navidrome, gonic)
- [MPRIS2](https://mpris2.readthedocs.io/en/latest/) control and metadata

## Screenshots

These are using [Navidrome's demo server](https://demo.navidrome.org/) ([config file](./stmp-navidromedemo.toml)).
These screenshots use [Navidrome's demo server](https://demo.navidrome.org/) ([config file](./stmp-navidromedemo.toml)).

Queue:
### Queue

![Queue View](./docs/screenshots/queue.png)

Browser:
### Browser

![Browser View](./docs/screenshots/browser.png)

## Dependencies

[mpv](https://mpv.io):
### Required Software

* Linux (Debian/Ubuntu): `apt install pkg-config libmpv libmpv-dev`
* MacOS (Homebrew): `brew install pkg-config mpv` (not the cask)
- [mpv](https://mpv.io)
- Linux (Debian/Ubuntu): `apt install pkg-config libmpv libmpv-dev`
- MacOS (Homebrew): `brew install pkg-config mpv` (not the cask)

Go build dependencies)
### Go Build Dependencies

* Go 1.19+
* [tview](https://github.com/rivo/tview)
* [go-mpv](https://github.com/spezifisch/go-mpv)
- Go 1.19+
- [tview](https://github.com/rivo/tview)
- [go-mpv](https://github.com/spezifisch/go-mpv)

## Compiling

stmp should compile normally with `go build`. Cgo is needed for linking with libmpv.
Compile STMPS with `go build`. Cgo is needed for interfacing with libmpv.

## Configuration

stmp looks for a config file called `stmp.toml` in either `$HOME/.config/stmp`
or the directory in which the executable is placed.
STMPS looks for a configuration file named `stmp.toml` in either `$HOME/.config/stmp` or the directory containing the executable.

### Example configuration
### Example Configuration

```toml
[auth]
username = 'admin'
password = 'password'
plaintext = true # Use 'legacy' unsalted password auth. (default: false)
plaintext = true # Use 'legacy' unsalted password authentication (default: false)

[server]
host = 'https://your-subsonic-host.tld'
scrobble = true # Use Subsonic scrobbling for last.fm/ListenBrainz (default: false)
scrobble = true # Use Subsonic scrobbling for last.fm/ListenBrainz (default: false)
```

## Usage

* Q - quit
* 1 - folder view
* 2 - queue view
* 3 - playlist view
* 4 - log (errors, etc) view
* Escape/Return - close modal if open
### General Navigation

### Playback
- `Q`: Quit
- `1`: Folder view
- `2`: Queue view
- `3`: Playlist view
- `4`: Log (errors, etc.) view
- `Escape`/`Return`: Close modal if open

These are accessible in every view.
### Playback Controls

* p - play/pause
* P - stop
* > - next song
* -/= volume down/volume up
* ,/. seek -10/+10 seconds
* r - add 50 random songs to the queue
These controls are accessible from any view:

### Browser
- `p`: Play/pause
- `P`: Stop
- `>`: Next song
- `-`/`=`: Volume down/volume up
- `,`/`.`: Seek -10/+10 seconds
- `r`: Add 50 random songs to the queue

* Enter - play song (clears current queue)
* a - add album or song to queue
* y - toggle star on song/album
* A - add song to playlist
* R - refresh the list (if in artist directory, only refreshes that artist)
* / - Search artists
* n - Continue search forward
* N - Continue search backwards
### Browser Controls

### Queue
- `Enter`: Play song (clears current queue)
- `a`: Add album or song to queue
- `y`: Toggle star on song/album
- `A`: Add song to playlist
- `R`: Refresh the list (if in artist directory, only refreshes that artist)
- `/`: Search artists
- `n`: Continue search forward
- `N`: Continue search backward

### Queue Controls

* d/Delete - remove currently selected song from the queue
* D - remove all songs from queue
* y - toggle star on song
- `d`/`Delete`: Remove currently selected song from the queue
- `D`: Remove all songs from queue
- `y`: Toggle star on song

### Playlist
### Playlist Controls

* n - new playlist
* d - delete playlist
* a - add playlist or song to queue
- `n`: New playlist
- `d`: Delete playlist
- `a`: Add playlist or song to queue

## Credits

* This is a fork of [STMP](https://github.com/wildeyedskies/stmp), see
[AUTHORS](./AUTHORS). I decided to rename my fork as its codebase has diverged
quite a bit.
This is a fork of [STMP](https://github.com/wildeyedskies/stmp). See [AUTHORS](./AUTHORS) for more information. The codebase has diverged significantly from the original.

## Advanced Configuration and Features

### MPRIS2 Integration

To enable MPRIS2 support (Linux only), run STMPS with the `-mpris` flag. Ensure you have D-Bus set up correctly on your system.

### MacOS Media Control

On MacOS, STMPS integrates with the native MediaPlayer framework to handle system media controls. This is automatically enabled if running on MacOS. *Note:* This is work in progress.

### Profiling

To profile the application, use the following flags:

- `-cpuprofile=<file>`: Write CPU profile to `file`
- `-memprofile=<file>`: Write memory profile to `file`

These flags are useful for performance debugging and analysis.

### Debugging and Logs

View logs and error messages in the log view by pressing `4`. This can help diagnose issues with server connections, playback, or other functionalities.

## Contributing

Contributions are welcome! Feel free to open issues or submit pull requests on GitHub. For major changes, please discuss first to ensure alignment with the project goals.

## Licensing

STMPS is licensed under the GNU General Public License v3.0 (GPL-3.0-only). This license allows you to freely use, modify, and distribute the software, provided that any distributed versions of the software, or derivative works, are also licensed under the GPL-3.0-only.

For more details, refer to the [LICENSE](./LICENSE) file in the repository.
4 changes: 2 additions & 2 deletions remote/mpris2.go
Original file line number Diff line number Diff line change
Expand Up @@ -225,9 +225,9 @@ func (m *MprisPlayer) Previous() *dbus.Error {
return nil
}

func (m *MprisPlayer) Seek(offset int64, _ int) *dbus.Error {
func (m *MprisPlayer) Seek(offset int64, _ int) (int64, error) {
// TODO not implemented
return nil
return 0, nil
}

func (m *MprisPlayer) SetPosition(trackId dbus.ObjectPath, position int64) *dbus.Error {
Expand Down

0 comments on commit a84b249

Please sign in to comment.