* Create IPC socket on UNIX platforms
Creates an IPC socket which remote programs/scripts can connect to. This
can be used to control ncspot or fetch the current playback status.
At the moment, only remote control is implemented. Next step is to send
the current player status as a JSON object.
Fixes#524
* Publish status changes to connected sockets
Whenever the playback mode (playing, paused, stopped) or the track changes, all
socket listeners will be notified.
Fixes#924, fixes#1019
* Document IPC feature
Passing IDs to rspotify still feels a little wonky with their `Id` changes
making use of `Cow`. Maybe it can be simplified on our end, but it's a start.
Fixes#844
See also:
https://github.com/ramsayleung/rspotify/pull/332
* fix(backtrace): Fix backtrace logging and stdout
- Add manual implementation for panic that logs backtrace to a file.
- Remove all manual output to stdout.
- Fix new clippy warnings from Rust 1.65.
* Update docs
Co-authored-by: Henrik Friedrichsen <henrik@affekt.org>
Like mentioned in the corresponding issue by ayushjaipuriyar, ncspot
would crash when the queue was empty, shuffled, and played. This commit
fixes that, together with some minor clippy fixes.
PlayTrackMenu was used before the refactor of the contextmenus. I forgot
to clean up the struct before making the commit since rustc didn't
complain. Just cleaning up my mistakes ;)
* Add save option to context menu of all possible ListItems
* Add play options to context menus
* Fix for playlists and tracks
* Move playback controls into main menu
Previously two vectors of categories were created. The pagination was set up to
store the newly fetched page in the `Vec` that was not displayed.
With this change newly fetched pages should correctly show up in the "Browse"
screen.
As reported in #939
Ever since albums were sorted the cache staleness detection stopped working as
the order of items plays into the check. Remove it as it currently doesn't
work. It also wasn't a very good check.
Instead of storing a separate copy of the view title.
Additionally, rename `ViewExt.set_title()` to `ViewExt.with_title()` as it
consumes `self` and returns ownership.