1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2025-12-11 07:52:50 -05:00
Files
DankMaterialShell/Services/MprisController.qml
2025-08-22 11:40:20 -04:00

57 lines
1.4 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()
}
}
}