import { bind } from "astal"; import { Gtk } from "astal/gtk4"; import AstalMpris from "gi://AstalMpris"; import Pango from "gi://Pango?version=1.0"; const ALIGN = Gtk.Align; const mpris = AstalMpris.get_default(); mpris.connect("player-added", p => { print("Player added:", p); }); const PlayerModule = () => { return ( {bind(mpris, "players").as(players => { return players.map(player => { return ; }); })} ); }; // TODO: Update widths const pbStatus = AstalMpris.PlaybackStatus; const PlayerItem = ({ player }: { player: AstalMpris.Player }) => { return ( l > 0)} value={bind(player, "position")} min={0} max={bind(player, "length")} onChangeValue={v => player.set_position(v.get_value()) } > secondsToFriendlyTime(v), )} hexpand cssClasses={["position"]} > } centerWidget={ } endWidget={ } > ); }; const secondsToFriendlyTime = (time: number) => { const minutes = Math.floor(time / 60); const hours = Math.floor(minutes / 60); const seconds = Math.floor(time % 60); if (hours > 0) { return `${hours}:${expandTime(minutes)}:${expandTime(seconds)}`; } else { return `${minutes}:${expandTime(seconds)}`; } }; const expandTime = (time: number): string => { return time < 10 ? `0${time}` : "" + time; }; export default { PlayerModule, };