pragma Singleton import Quickshell import Quickshell.Io import QtQuick Singleton { id: root property string file property string artist property string album property string title readonly property string coverPath: "/home/samn/Music/cover.jpg" signal songChanged() signal coverLoaded() Process { id: songProc command: ["rmpc", "song"] running: true stdout: StdioCollector { onStreamFinished: { if (!this.text) { root.file = "" root.artist = "" root.album = "" root.title = "" return } var oldFile = root.file var obj = JSON.parse(this.text); root.file = obj.file root.artist = obj.metadata.artist root.album = obj.metadata.album root.title = obj.metadata.title if (obj.file !== oldFile) { root.songChanged() coverProc.exec(["ffmpeg", "-y", "-i", "/home/samn/Music/" + obj.file, "-an", "-c:v", "copy", root.coverPath]) } } } } Process { id: coverProc running: false onExited: root.coverLoaded() } Timer { interval: 5000 running: true repeat: true onTriggered: songProc.running = true } }