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.
v2.1.0 - 2026-04-18
-
Player::bus_name_trimmed()which returns the player's bus name without the MPRIS2 prefix - Kanjirito -
debug-vendoredfeature to enable thevendoredfeature ofdbus. - poly000
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.
- Bumped
thiserrorto version 2.0. - Bumped
termiondev dependency to 4. - Alexander Kjäll (alexanderkjall)
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
Displaytrait Kanjirito
Player::can_shuffleandPlayer::checked_get_shuffle. - Stephan Henrichs (Kilobyte22)- Iterator methods to
Metadata:impl IntoIteratoriter()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_volumePlayer::has_position,Player::checked_get_position,Player::checked_set_positionPlayer::has_playback_rate,Player::checked_get_playback_rate,Player::checked_set_playback_ratePlayer::can_loop,Player::checked_get_loop_status
PlayerIterthat iterates over all of the players KanjiritoPlayerFinder.player_timeout_msfield that changes the DBUS timeout value for all newPlayers Kanjirito
- Now using Rust 2018 edition.
Player::checked_set_shufflealso checks::can_shuffle. - Stephan Henrichs (Kilobyte22)Player::checked_set_loop_statusalso checks::can_loop- Harrison Thorne (harrisonthorne)Progressdefault values useschecked_get_*functions - Harrison Thorne (harrisonthorne)- Documentation was made easier to navigate - Kanjirito
- Use
thiserror&anyhowinstead of unmaintainedfailure- fengalin - Removed
Playerlifetime Kanjirito - All
PlayerFinderfind methods switched to usingPlayerIterKanjirito
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.
PlayerEventsis now properly exposed from the crate root.- Now using
dbus0.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
TrackListErrorandProgressError. ProgressTracker::ticknow returns aProgressTickinstead of abool.ProgressTickcontains information about tracklist (if player supports it), and what parts have changed.
- Emitted
Event::TrackChangedevents now contains full metadata. - Compilation warnings caused by newer Rust versions (up to 1.28) have been fixed.
Player::set_volumeis fixed (always set to 0 previously)- Detection of volume and playback rate changes using
PlayerEventsiterator now works. - Loading of length of a track now works in more clients. #40
- A new version of
Metadatathat 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.MediaPlayer2interface. - Support for the
Seekedsignal in the blockingPlayerEventsiterator. - Support for TrackList signals in
PlayerEventsiterator. - A new
TrackListstruct, which keeps track ofMetadatafor tracks.Progressprovides an up-to-dateTrackListif the player supports it.- You can manually maintain this for your
PlayerEventsiterator if you wish.
- Support for loading
Metadatafor a specificTrackID. TrackListErroris an error type for problems with tracklists.ProgressErroris 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.
MetadataValuetype, for dynamically types metadata values. This will replace the raw DBus values inMetadatain version 2.0.Player::get_metadata_hashwhich returns aResult<HashMap<String, MetadataValue>, DBusError>.Metadata::rest_hashwhich converts values in theresthash intoMetadataValues, where possible. This is closer to howMetadatawill work in 2.0.Progress::playback_ratereturns the playback rate at the time of measurement.Player::is_runningchecks if a player is still running. Use this to detect players shutting down.
Metadatacan now be constructed with empty metadata;track_idwill 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.
Metadatanow implementsDefault.
Metadata::restis deprecated; version 2.0 will have a method that returnsMetadataValues instead.Player::get_metadata_hashis added as deprecated. It will likely be merged intoMetadatain version 2.0, but presents a way to get all supported metadata values whereMetadata::restmight not.
v1.0.0 - 2018-01-19
TrackIDstruct added.Playercan now query and changeShufflestatus.Playercan now query and changeLoopStatus.Playercan now change playback rate.Playercan now query for valid playback rates and if it supports setting rates at all.Playercan now control volume.Playercan now query for current position as astd::time::Durationand not just a microsecond count.Playercan set position, if a validTrackIDis given.- Note: This library has no way of querying for valid
TrackIDs right now.
- Note: This library has no way of querying for valid
failurereplaceserror_chainfor error handling.- All errors now implements the
failure::Failtrait, and methods return more fine-grainedResults.
- All errors now implements the
- All fields on
ProgressandMetadataare now methods instead. - Playback rate is now
f64instead off32.
- The
supports_progressmethod is removed fromProgress.- This is better left to clients to do themselves as this library cannot guarantee anything anyway.