1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2025-12-08 14:35:39 -05:00
Files
DankMaterialShell/Services/MprisController.qml
2025-07-17 17:58:56 -04:00

56 lines
1.3 KiB
QML

pragma Singleton
pragma ComponentBehavior: Bound
import QtQuick
import Quickshell
import Quickshell.Io
import Quickshell.Services.Mpris
import Quickshell.Widgets
Singleton {
id: root
readonly property list<MprisPlayer> availablePlayers: Mpris.players.values
property MprisPlayer activePlayer: availablePlayers.find(p => p.isPlaying)
?? availablePlayers.find(p => p.canControl && p.canPlay)
?? null
IpcHandler {
target: "mpris"
function list(): string {
return root.availablePlayers.map(p => p.identity).join("");
}
function play(): void {
if (root.activePlayer?.canPlay)
root.activePlayer.play();
}
function pause(): void {
if (root.activePlayer?.canPause)
root.activePlayer.pause();
}
function playPause(): void {
if (root.activePlayer?.canTogglePlaying)
root.activePlayer.togglePlaying();
}
function previous(): void {
if (root.activePlayer?.canGoPrevious)
root.activePlayer.previous();
}
function next(): void {
if (root.activePlayer?.canGoNext)
root.activePlayer.next();
}
function stop(): void {
root.activePlayer?.stop();
}
}
}