54 lines
1.9 KiB
JavaScript
54 lines
1.9 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);
|
|
|
|
if(!mpris)
|
|
return;
|
|
|
|
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}`;
|
|
}]
|
|
],
|
|
}),
|
|
],
|
|
}),
|
|
})
|