Displays synchronized lyrics, track duration, and live audio stream metrics for Spotify in the top bar. Improvements & Features: * Accurate Lyrics Finder: LRCLIB search with ±5s duration drift matching and closest-duration sorting * Resilient Retry Polling: Staggered backup retries (1s, 3s, 6s, 12s up to 30s) gracefully handle transient API 503/network errors for every song * Added Quality Inspector: Zero-debug stream bitrate & payload calculation directly from active Spotify cache via Linux /proc * Scrolling Animation: Right-to-left slide transition from title to lyrics, smooth vertical rolling between lines * Live Duration & Bitrate: Shows track duration, measured bitrate, and stream size in the menu * Clean Panel Presence: Automatically appears only when Spotify is running
Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.
EGO-X-004 warning
extensions should avoid synchronous file IO in shell code
Shell code should avoid synchronous file IO APIs like `GLib.file_get_contents()` and `Gio.File.load_contents()`.
extension.js:43
GLib.file_get_contents(`/proc/${pid}/fdinfo/${fd}`)
EGO-X-002 warning
extensions should not use synchronous subprocess APIs in shell code
Shell code should avoid synchronous subprocess APIs like `GLib.spawn_command_line_sync()` and `GLib.spawn_sync()`.
extension.js:57
GLib.spawn_command_line_sync(`pgrep -u ${username} -x spotify`)
extension.js:59
GLib.spawn_command_line_sync(`pgrep -u ${username} -f usr/share/spotify/spotify`)
EGO-L-007 warning
main loop sources should be removed before being recreated
Main loop sources should be removed before creating a new source on the same field.
extension.js:444
this._qualitySampleTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 1000, () => {
this._qualitySampleTimeoutId = null;
// Make sure track didn't change while waiting
if (!this._currentTrack || this._currentTrack.title !== trackTitle) {
| Version | Status |
|---|---|
| 1 | Unreviewed |