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

51 lines
1.8 KiB
JavaScript

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