forked from wildeyedskies/stmp
-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
381ce42
commit a84b249
Showing
2 changed files
with
93 additions
and
60 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters