Files
linux-dotfiles/quickshell/services/NowPlayingService.qml
2026-04-07 23:48:02 +02:00

44 lines
1.2 KiB
QML

import Quickshell.Io
import QtQuick
Item {
id: root
property string artist: ""
property string title: ""
property string artUrl: ""
property bool isPlaying: false
Process {
id: playerctlProc
// we need a separator, so use |||
command: ["playerctl", "metadata", "--format", "{{artist}}|||{{title}}|||{{mpris:artUrl}}|||{{status}}"]
stdout: StdioCollector {
onStreamFinished: {
var text = this.text.trim();
if (!text) {
root.artist = "";
root.title = "";
root.artUrl = "";
root.isPlaying = false;
return;
}
var parts = text.split("|||");
root.artist = parts[0] || "";
root.title = parts[1] || "";
root.artUrl = parts[2] || "";
root.isPlaying = (parts[3] || "").trim() === "Playing";
}
}
}
Timer {
interval: 2000
running: true
repeat: true
onTriggered: playerctlProc.running = true
}
Component.onCompleted: playerctlProc.running = true
}