This repository has been archived on 2024-04-14. You can view files and clone it, but cannot push or open issues or pull requests.
nixos-dotfiles/user/configs/wayland/ags/ags-config/js/panel/widgets/mpris.js

46 lines
1.7 KiB
JavaScript

export default player => ags.Widget.Button({
className: 'media',
onPrimaryClick: () => ags.Service.Mpris.getPlayer(player)?.playPause(),
onScrollUp: () => ags.Service.Mpris.getPlayer(player)?.previous(),
onScrollDown: () => ags.Service.Mpris.getPlayer(player)?.next(),
child: ags.Widget.Box({
children: [
ags.Widget.Stack({
items: [
['paused', ags.Widget.Icon('media-playback-pause-symbolic')],
['playing', ags.Widget.Icon('media-playback-start-symbolic')],
['stopped', ags.Widget.Icon('media-playback-stop-symbolic')],
],
connections: [[ags.Service.Mpris, statusIcon => {
const mpris = ags.Service.Mpris.getPlayer(player);
switch (mpris.playBackStatus) {
case "Playing":
statusIcon.shown = 'playing';
break;
case "Paused":
statusIcon.shown = 'paused';
break;
default:
statusIcon.shown = 'stopped';
}
}]],
}),
ags.Widget.Label({
connections: [[ags.Service.Mpris, label => {
const mpris = ags.Service.Mpris.getPlayer(player);
if (!mpris || mpris.playBackStatus == "Stopped")
label.label = ' Stopped';
else
label.label = ` ${mpris.trackArtists.join(', ')} - ${mpris.trackTitle}`;
}]],
}),
],
}),
})