1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-04-04 04:42:05 -04:00
Files
DankMaterialShell/quickshell/Services/TrackArtService.qml
2026-02-13 17:31:51 -05:00

50 lines
1.2 KiB
QML

pragma Singleton
pragma ComponentBehavior: Bound
import Quickshell
import QtQuick
import Quickshell.Services.Mpris
import qs.Common
Singleton {
id: root
property string _lastArtUrl: ""
property string _bgArtSource: ""
property bool loading: false
function loadArtwork(url) {
if (!url || url === "") {
_bgArtSource = "";
_lastArtUrl = "";
loading = false;
return;
}
if (url === _lastArtUrl)
return;
_lastArtUrl = url;
if (url.startsWith("http://") || url.startsWith("https://")) {
_bgArtSource = url;
loading = false;
return;
}
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 ? localUrl : "";
loading = false;
}, 200);
}
property MprisPlayer activePlayer: MprisController.activePlayer
onActivePlayerChanged: {
loadArtwork(activePlayer?.trackArtUrl ?? "");
}
}