diff --git a/quickshell/Modules/OSD/MediaPlaybackOSD.qml b/quickshell/Modules/OSD/MediaPlaybackOSD.qml index 6b98f7cf..904c68fc 100644 --- a/quickshell/Modules/OSD/MediaPlaybackOSD.qml +++ b/quickshell/Modules/OSD/MediaPlaybackOSD.qml @@ -27,11 +27,11 @@ DankOSD { let icon = "music_note"; switch (player.playbackState) { case MprisPlaybackState.Playing: - icon = "pause"; + icon = "play_arrow"; break; case MprisPlaybackState.Paused: case MprisPlaybackState.Stopped: - icon = "play_arrow"; + icon = "pause"; break; } if (icon === _displayIcon) @@ -75,7 +75,7 @@ DankOSD { function onLoadingChanged() { if (TrackArtService.loading || !root._pendingShow) return; - if (!TrackArtService._bgArtSource || artPreloader.status !== Image.Loading) { + if (!TrackArtService._bgArtSource || artPreloader.status === Image.Ready) { root._pendingShow = false; root.show(); } @@ -87,9 +87,12 @@ DankOSD { function onStatusChanged() { if (!root._pendingShow || TrackArtService.loading) return; - if (artPreloader.status !== Image.Loading) { + switch (artPreloader.status) { + case Image.Ready: + case Image.Error: root._pendingShow = false; root.show(); + break; } } } @@ -110,7 +113,11 @@ DankOSD { root.show(); return; } - if (!TrackArtService.loading) { + if (TrackArtService.loading) { + root._pendingShow = true; + return; + } + if (!TrackArtService._bgArtSource || artPreloader.status === Image.Ready) { root.show(); return; } diff --git a/quickshell/Services/TrackArtService.qml b/quickshell/Services/TrackArtService.qml index d17b73ff..e2c6ea55 100644 --- a/quickshell/Services/TrackArtService.qml +++ b/quickshell/Services/TrackArtService.qml @@ -11,7 +11,6 @@ Singleton { property string _lastArtUrl: "" property string _bgArtSource: "" - property string activeTrackArtFile: "" property bool loading: false function loadArtwork(url) { @@ -24,30 +23,20 @@ Singleton { if (url === _lastArtUrl) return; _lastArtUrl = url; - loading = true; - if (!url.startsWith("http://") && !url.startsWith("https://")) { - const localUrl = url; - const filePath = url.startsWith("file://") ? url.substring(7) : url; - Proc.runCommand("trackart", ["test", "-f", filePath], (output, exitCode) => { - if (_lastArtUrl !== localUrl) - return; - _bgArtSource = exitCode === 0 ? localUrl : ""; - loading = false; - }, 200); + if (url.startsWith("http://") || url.startsWith("https://")) { + _bgArtSource = url; + loading = false; return; } - const filename = "/tmp/.dankshell/trackart_" + Date.now() + ".jpg"; - activeTrackArtFile = filename; - - Proc.runCommand("trackart_cleanup", ["sh", "-c", "mkdir -p /tmp/.dankshell && find /tmp/.dankshell -name 'trackart_*' ! -name '" + filename.split('/').pop() + "' -delete"], null, 0); - - Proc.runCommand("trackart", ["dms", "dl", "-o", filename, "--user-agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36", url], (output, exitCode) => { - const resultPath = output.trim(); - if (resultPath !== filename) + loading = true; + const localUrl = url; + const filePath = url.startsWith("file://") ? url.substring(7) : url; + Proc.runCommand("trackart", ["test", "-f", filePath], (output, exitCode) => { + if (_lastArtUrl !== localUrl) return; - _bgArtSource = exitCode === 0 ? "file://" + resultPath : ""; + _bgArtSource = exitCode === 0 ? localUrl : ""; loading = false; }, 200); }