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
Raw Normal View History

2023-10-15 00:16:19 +01:00
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({
2023-10-18 17:33:03 +01:00
className: 'mpris',
2023-10-15 00:16:19 +01:00
onPrimaryClick: () => Mpris.getPlayer(player)?.playPause(),
onScrollUp: () => Mpris.getPlayer(player)?.previous(),
onScrollDown: () => Mpris.getPlayer(player)?.next(),
2023-10-12 20:52:06 +01:00
2023-10-15 00:16:19 +01:00
child: Box({
2023-10-12 20:52:06 +01:00
children: [
2023-10-15 00:16:19 +01:00
Stack({
2023-10-12 20:52:06 +01:00
items: [
2023-10-15 00:16:19 +01:00
['paused', Icon('media-playback-pause-symbolic')],
['playing', Icon('media-playback-start-symbolic')],
['stopped', Icon('media-playback-stop-symbolic')],
2023-10-12 20:52:06 +01:00
],
2023-10-15 00:16:19 +01:00
connections: [
[Mpris, statusIcon => {
const mpris = Mpris.getPlayer(player);
2023-10-12 20:52:06 +01:00
2023-10-15 00:16:19 +01:00
switch (mpris.playBackStatus) {
case "Playing":
statusIcon.shown = 'playing';
break;
case "Paused":
statusIcon.shown = 'paused';
break;
default:
statusIcon.shown = 'stopped';
}
}]
],
2023-10-12 20:52:06 +01:00
}),
2023-10-15 00:16:19 +01:00
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}`;
}]
],
2023-10-12 20:52:06 +01:00
}),
],
}),
})