Compact media controls for the top bar that follow the colors of the current cover art. Works with Spotify and any MPRIS player. * Previous, play/pause and next in a small pill, with the song position drawn as a ring around it * Hover the pill for a popup with large cover art, title, artist, album, year and genre, a scrubber, shuffle, repeat and volume * Click the cover to bring the player to the front * Scroll over the pill to skip tracks or seek * Six open animations, adjustable opacity and tinting * Optional: like songs, add them to playlists and see Smart Shuffle with your own Spotify developer app Network access: cover art is downloaded from the URL the player provides. Year and genre are looked up on musicbrainz.org (artist, title and album are sent) when the player does not provide them; this can be turned off in the settings. Spotify account features only talk to the Spotify Web API after you connect your account.
Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.
EGO-L-003 warning
signals connected by extension should be disconnected in disable()
Signals assigned in `enable()` are missing matching disconnect calls in `disable()` or its helper methods.
extension.js:90
this._indicator.connect('destroy', actor => this._onActorDestroyed(actor))
extension.js:91
this._indicator.connect('notify::hover', () => this._syncHover())
extension.js:27
this._manager.connect('active-changed', () => this._onActiveChanged())
extension.js:28
this._manager.connect('changed', () => this._sync())
extension.js:30
this._manager.connect('position-changed', () => this._updateProgress())
extension.js:29
this._manager.connect('track-changed', () => this._sync())
extension.js:42
this._popup.connect('destroy', actor => this._onActorDestroyed(actor))
extension.js:44
this._popup.connect('drag-changed', () => this._syncHover())
extension.js:43
this._popup.connect('hover-changed', () => this._syncHover())
EGO-L-004 warning
main loop sources should be removed in disable()
Main loop sources assigned in `enable()` are missing matching removals in `disable()` or its helper methods.
extension.js:209
this._closeId = GLib.timeout_add(GLib.PRIORITY_DEFAULT,
Math.max(1, this._settings.get_int('close-delay')), () => {
this._closeId = 0;
this._popup.close();
return GLib.SOURCE_REMOVE;
extension.js:199
this._openId = GLib.timeout_add(GLib.PRIORITY_DEFAULT,
Math.max(1, this._settings.get_int('open-delay')), () => {
this._openId = 0;
this._popup.open(this._indicator);
return GLib.SOURCE_REMOVE
extension.js:146
this._tickId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, TICK_INTERVAL, () => {
sinceResync += TICK_INTERVAL;
if (sinceResync >= RESYNC_INTERVAL) {
sinceResync = 0;
this._manager.active?.resync();
}
EGO-M-004 error
metadata shell-version must only include plausible stable releases and at most one development release
Field `shell-version` contains invalid values, more than one development release, or implausible future releases.
metadata.json must be well-formed
metadata.json
shell-version=['50', '51']
| Version | Status |
|---|---|
| 1.1 (1) | Unreviewed |