- Multi-instance player support. It's now possible to specify a player by its non-unique name prefix only, without the unique instance suffix, e.g.,
-p firefox
instead of-p firefox.instance_1_34
. The blocklet monitors all instances and pick the new one when the previous disappears. - Improved formatter by @tellezhector:
- Added fallback to built-in
Formatter
format specs. See Python Docs. - Added a format_spec for truncating strings and adding a suffix
{string:.<max_length>,<suffix>}
.
- Added fallback to built-in
- Added a placeholder message displayed when there is no player.
- The blocket no longer handles
SIGINT
. See PR #14 for an explanation.
- Dropped Python 3.6 and 3.7 support.
- Added Python 3.12 support.
- Added
sanitize_unicode
option (enabled by default) to remove some non-printable unicode characters (see #9). - Added
title
filter.
- All
Formatter
constructor/initializer arguments are now required (no default values) and keyword-only.
- An empty string is now used as a fallback for missing metadata fields (artist, title). Previously, an exception would be raised if any of the required fields were missing.
- The blocklet now works with any media player that supports the MPRIS D-Bus interface, not only the Spotify app. A new required parameter
player
was introduced. To indicate this change, the blocklet was renamed fromi3blocks-spotify-persist
toi3blocks-mpris
. - The minimum Python version was bumped to 3.6.
- The
PlaybackStatus
andMetadata
properties is now cached to properly handle thePropertiesChanged
signal. There was no issue with the Spotify app purely by chance. - Fixed erroneous
init_player()
logic.
- Fixed an issue where the blocklet would hang up hugging CPU when Spotify app was not running for a while (#6).
- The
NameOwnerChanged
signal is now used instead oftime.sleep(1)
polling to get theSpotify
object. This change provides a fix for the issue mentioned above. - The
stdin
input thread was replaced with GIOInputStream
async (callback-based) reads. - Some “public” methods and a constructor of the
SpotifyBlocket
class were changed. Although these changes are actually breaking from a “public” API point of view, there was only a minor (not major) version bump since it's unlikely that the blocket is used as a Python library by anyone.
- Added support for command line arguments.
- Deduplication of messages — the updated message will be printed only if it differs from the previous one.
- The default format now uses a textual status instead of an icon.
- Pango markup escape is now disabled by default.
The first public release.