All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
Player::bus_name_trimmed()
which returns the player's bus name without the MPRIS2 prefix - Kanjirito
Player::bus_name_player_name_part()
is now deprecated and will be removed in the next major release. See the method's documentation and #81 for details and workarounds.
- Removed
derive_is_enum_variant
dependency. - poly000
v2.0.1 - 2023-06-15
- Add extra check for
Player::get_track_list()
. Without this,Player::track_progress()
would fail for Spotify. - Mihai Fufezan (fufexan)
v2.0.0 - 2022-11-15
- Minimum supported Rust version is now 1.54.0.
v2.0.0-rc3 - 2022-09-12
Important: Now using Rust 2018 edition.
- Track change detection for some non-conforming players (e.g. Spotify). - Stephan Henrichs (Kilobyte22)
- Error on progress tracker for players that do not support shuffling. - Stephan Henrichs (Kilobyte22)
- Events not added for streams - Kanjirito
- Incorrect error messages when using the
Display
trait Kanjirito
Player::can_shuffle
andPlayer::checked_get_shuffle
. - Stephan Henrichs (Kilobyte22)- Iterator methods to
Metadata
:impl IntoIterator
iter()
keys()
Player::bus_name_player_name_part
- Koen Bolhuis (InputUsername)Metadata::as_hashmap(&self)
which returns a simple borrowed hashmap.- More
Player::has_*
,Player::can_*
, andPlayer::checked_*
methods - Harrison Thorne (harrisonthorne)Player::has_volume
,Player::checked_get_volume
,Player::checked_set_volume
Player::has_position
,Player::checked_get_position
,Player::checked_set_position
Player::has_playback_rate
,Player::checked_get_playback_rate
,Player::checked_set_playback_rate
Player::can_loop
,Player::checked_get_loop_status
PlayerIter
that iterates over all of the players KanjiritoPlayerFinder.player_timeout_ms
field that changes the DBUS timeout value for all newPlayer
s Kanjirito
- Now using Rust 2018 edition.
Player::checked_set_shuffle
also checks::can_shuffle
. - Stephan Henrichs (Kilobyte22)Player::checked_set_loop_status
also checks::can_loop
- Harrison Thorne (harrisonthorne)Progress
default values useschecked_get_*
functions - Harrison Thorne (harrisonthorne)- Documentation was made easier to navigate - Kanjirito
- Use
thiserror
&anyhow
instead of unmaintainedfailure
- fengalin - Removed
Player
lifetime Kanjirito - All
PlayerFinder
find methods switched to usingPlayerIter
Kanjirito
v2.0.0-rc2 - 2020-02-15
This is a RC for 2.0.0. If no major problems are discovered, this version will be re-labeled as 2.0.0. If issues are found, they will be fixed in subsequent versions.
PlayerEvents
is now properly exposed from the crate root.- Now using
dbus
0.8.1. - This might require a bump of Rust version.
v2.0.0-rc1 - 2019-02-06
This is a RC for 2.0.0. If no major problems are discovered, this version will be re-labeled as 2.0.0. If issues are found, they will be fixed in subsequent versions.
- This library now only supports "latest stable" version of Rust. Hopefully this can be changed the day it is possible to mark minimum version in the crate manifest.
- Some methods have a different error type to add more context to the errors
that can happen. See
TrackListError
andProgressError
. ProgressTracker::tick
now returns aProgressTick
instead of abool
.ProgressTick
contains information about tracklist (if player supports it), and what parts have changed.
- Emitted
Event::TrackChanged
events now contains full metadata. - Compilation warnings caused by newer Rust versions (up to 1.28) have been fixed.
Player::set_volume
is fixed (always set to 0 previously)- Detection of volume and playback rate changes using
PlayerEvents
iterator now works. - Loading of length of a track now works in more clients. #40
- A new version of
Metadata
that should be much easier to use with extra metadata values, or to populate for tests. - A full implementation of all properties and methods on the
org.mpris.MediaPlayer2
interface. - Support for the
Seeked
signal in the blockingPlayerEvents
iterator. - Support for TrackList signals in
PlayerEvents
iterator. - A new
TrackList
struct, which keeps track ofMetadata
for tracks.Progress
provides an up-to-dateTrackList
if the player supports it.- You can manually maintain this for your
PlayerEvents
iterator if you wish.
- Support for loading
Metadata
for a specificTrackID
. TrackListError
is an error type for problems with tracklists.ProgressError
is an error type for problems with progress tracking.Player::can_edit_tracks
.Player::checked_can_edit_tracks
.Player::supports_track_lists
.- A new example called "Capabilities" that shows capabilities of running players.
- All deprecated items in v1.1.1 have been removed.
v1.1.1 - 2019-01-04
- Loading of length of a track now works in more clients. #40
v1.1.0 - 2018-08-18
Player::events(&self)
returns a blocking iterator of player events.- Use this to block single-threaded apps until something happens and then react on this event.
- This is not suitable if you want to render a progress bar as it will only
return when something changes; if you want to render the information at a
regular update interval then keep using
Player::track_progress(&self)
instead.
MetadataValue
type, for dynamically types metadata values. This will replace the raw DBus values inMetadata
in version 2.0.Player::get_metadata_hash
which returns aResult<HashMap<String, MetadataValue>, DBusError>
.Metadata::rest_hash
which converts values in therest
hash intoMetadataValue
s, where possible. This is closer to howMetadata
will work in 2.0.Progress::playback_rate
returns the playback rate at the time of measurement.Player::is_running
checks if a player is still running. Use this to detect players shutting down.
Metadata
can now be constructed with empty metadata;track_id
will then be the empty string.- Some players (like VLC) without any tracks on its play queue emits empty metadata, which would cause this library to return an error instead of an empty metadata.
Metadata
now implementsDefault
.
Metadata::rest
is deprecated; version 2.0 will have a method that returnsMetadataValue
s instead.Player::get_metadata_hash
is added as deprecated. It will likely be merged intoMetadata
in version 2.0, but presents a way to get all supported metadata values whereMetadata::rest
might not.
v1.0.0 - 2018-01-19
TrackID
struct added.Player
can now query and changeShuffle
status.Player
can now query and changeLoopStatus
.Player
can now change playback rate.Player
can now query for valid playback rates and if it supports setting rates at all.Player
can now control volume.Player
can now query for current position as astd::time::Duration
and not just a microsecond count.Player
can set position, if a validTrackID
is given.- Note: This library has no way of querying for valid
TrackID
s right now.
- Note: This library has no way of querying for valid
failure
replaceserror_chain
for error handling.- All errors now implements the
failure::Fail
trait, and methods return more fine-grainedResult
s.
- All errors now implements the
- All fields on
Progress
andMetadata
are now methods instead. - Playback rate is now
f64
instead off32
.
- The
supports_progress
method is removed fromProgress
.- This is better left to clients to do themselves as this library cannot guarantee anything anyway.