Media controls for the GNOME Shell panel. Works with any MPRIS player (Spotify, VLC, Rhythmbox, browsers) and lets you switch between several players from tabs in the popup. * Play, pause, skip, shuffle and repeat * Track and artist in the panel with a scrolling label * Optional vinyl record effect on the album art, set per app (double-click the art) * Time-synced lyrics fetched from lrclib.net (single-click the art) * Seekable progress slider with selectable themes * Panel label font, colour and element order settings
Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.
| Version | Status |
|---|---|
| 6.6 (44) | Active |
| 6.6 (43) | Active |
| 6.6 (42) | Rejected |
| 6.6 (41) | Rejected |
| 6.6 (40) | Active |
| 6.6 (39) | Rejected |
| 6.6 (38) | Rejected |
| 6.6 (37) | Rejected |
| 6.6 (36) | Rejected |
| 6.6 (35) | Rejected |
| 6.6 (34) | Rejected |
| 6.6 (33) | Rejected |
| 6.6 (32) | Rejected |
| 6.5 (31) | Active |
| 6.5 (30) | Rejected |
| 6.5 (29) | Rejected |
| 6.5 (28) | Rejected |
| 6.5 (27) | Rejected |
| 6.5 (26) | Rejected |
| 6.5 (25) | Rejected |
| 6.5 (24) | Rejected |
| 6.0 (23) | Rejected |
| 6.0 (22) | Rejected |
| 6.0 (21) | Rejected |
| 20 | Active |
| 19 | Rejected |
| 18 | Rejected |
| 17 | Active |
| 16 | Rejected |
| 15 | Active |
| 14 | Active |
| 13 | Active |
| 12 | Active |
| 11 | Rejected |
| 10 | Rejected |
| 9 | Rejected |
| 8 | Active |
| 7 | Active |
| 6 | Rejected |
| 5 | Rejected |
| 4 | Rejected |
| 3 | Rejected |
| 2 | Rejected |
| 1 | Rejected |
Hi, and thanks for the review. I’ve uploaded a new version that addresses the points: try/catch cleanup: Most of them are gone. Settings reads, signal disconnects, app and icon lookups, and the theme-settings watchers don’t throw in practice, so they’re plain calls now. I only kept catches where the call can really fail: D-Bus calls, the lyrics network request, decoding cover and gif files, parsing stored JSON, and running user theme scripts. _resetFrame(): I replaced the catch by listening to each frame actor’s destroy signal and dropping it from the map, so the reset only touches live actors. The has_style_class_name?.() checks are now instanceof St.Widget. Sorry for the large diff. I’ve been working on this extension for a long time before submitting, and a lot of features landed together (lyrics, immersive cover, progress slider themes, the prefs pages), so the changes piled up. Could you please review the new version when you have time? I’m happy to explain or change anything that’s unclear.
1. Please remove `this._destroyed`. That's a bad practice: https://gjs.guide/extensions/review-guidelines/best-practices.html#lifecycle-and-destruction-state 2. You should call `abort()` on cancel (line 131 `utils/core/themeUtils.js`): [`Soup.Session.abort()`](https://gjs-docs.gnome.org/soup30~3.0/soup.session#method-abort)
Also, please optimize the `banner.png` file. It's a large file for just one file in a GNOME Shell extension package.