From dbe4852ed6901cc7020497054e839cde6af094c4 Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Sun, 11 May 2025 18:42:45 +1000 Subject: feat: mpris shortcuts + ipc --- services/Players.qml | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 services/Players.qml diff --git a/services/Players.qml b/services/Players.qml new file mode 100644 index 0000000..aaf1f9b --- /dev/null +++ b/services/Players.qml @@ -0,0 +1,58 @@ +pragma Singleton + +import "root:/widgets" +import Quickshell +import Quickshell.Io +import Quickshell.Services.Mpris + +Singleton { + id: root + + readonly property list list: Mpris.players.values + readonly property MprisPlayer active: list.find(p => p.identity === "Spotify") ?? list[0] ?? null + + CustomShortcut { + name: "mediaToggle" + description: "Toggle media playback" + onPressed: { + const active = root.active; + if (active && active.canTogglePlaying) + active.togglePlaying(); + } + } + + CustomShortcut { + name: "mediaPrev" + description: "Previous track" + onPressed: { + const active = root.active; + if (active && active.canGoPrevious) + active.previous(); + } + } + + CustomShortcut { + name: "mediaNext" + description: "Next track" + onPressed: { + const active = root.active; + if (active && active.canGoNext) + active.next(); + } + } + + CustomShortcut { + name: "mediaStop" + description: "Stop media playback" + onPressed: root.active?.stop() + } + + IpcHandler { + target: "mpris" + + function getActive(prop: string): string { + const active = root.active; + return active ? active[prop] ?? "Invalid property" : "No active player"; + } + } +} -- cgit v1.2.3-freya