import { Astal, Gtk } from "astal/gtk3" import Mpris from "gi://AstalMpris" import { bind } from "astal" function lengthStr(length: number) { const min = Math.floor(length / 60) const sec = Math.floor(length % 60) const sec0 = sec < 10 ? "0" : "" return `${min}:${sec0}${sec}` } function MediaPlayer({ player }: { player: Mpris.Player }) { const { START, END } = Gtk.Align const title = bind(player, "title").as(t => t || "Unknown Track") const artist = bind(player, "artist").as(a => a || "Unknown Artist") const coverArt = bind(player, "coverArt").as(c => `background-image: url('${c}')`) const playerIcon = bind(player, "entry").as(e => Astal.Icon.lookup_icon(e) ? e : "audio-x-generic-symbolic") const position = bind(player, "position").as(p => player.length > 0 ? p / player.length : 0) const playIcon = bind(player, "playbackStatus").as(s => s === Mpris.PlaybackStatus.PLAYING ? "media-playback-pause-symbolic" : "media-playback-start-symbolic" ) return } export default function MprisPlayers() { const mpris = Mpris.get_default() return {bind(mpris, "players").as(arr => arr.map(player => ( )))} }