nova-shell/modules/Mpris.qml
2026-04-12 12:19:30 +02:00

38 lines
1.1 KiB
QML

import QtQuick
import Quickshell.Services.Mpris
import "." as M
M.BarSection {
id: root
spacing: M.Theme.moduleSpacing
visible: M.Modules.mpris && player !== null
tooltip: {
const p = root.player;
if (!p)
return "";
const parts = [];
if (p.trackTitle)
parts.push(p.trackTitle);
if (p.trackArtists?.length)
parts.push(Array.isArray(p.trackArtists) ? p.trackArtists.join(", ") : p.trackArtists);
if (p.trackAlbum)
parts.push(p.trackAlbum);
return parts.join("\n") || p.identity;
}
readonly property MprisPlayer player: Mpris.players.values[0] ?? null
readonly property bool playing: player?.playbackState === MprisPlaybackState.Playing
M.BarIcon {
icon: root.playing ? "\uF04B" : (root.player?.playbackState === MprisPlaybackState.Paused ? "\uDB80\uDFE4" : "\uDB81\uDCDB")
anchors.verticalCenter: parent.verticalCenter
}
M.BarLabel {
label: root.player?.identity ?? ""
anchors.verticalCenter: parent.verticalCenter
}
TapHandler {
onTapped: root.player?.togglePlaying()
}
}