78 lines
2.3 KiB
JavaScript
78 lines
2.3 KiB
JavaScript
const mpris = await Service.import("mpris");
|
|
const players = mpris.bind("players");
|
|
|
|
// TODO: rework
|
|
export const currently_playing_controller = Widget.Box({
|
|
vertical: true,
|
|
visible: players.as((p) => p.length > 0),
|
|
children: players.as((p) => p.map(CurrentlyPlaying)),
|
|
});
|
|
|
|
function CurrentlyPlaying(player) {
|
|
return Widget.Box({
|
|
class_name: "currently-playing-big",
|
|
css: player.bind("cover_path").as((url) => {
|
|
if (url == undefined) {
|
|
return "";
|
|
}
|
|
console.log(url);
|
|
return `
|
|
background-image: url('${url}');
|
|
background-blend-mode: darken;
|
|
background-position: center;
|
|
background-size: cover;
|
|
`;
|
|
}),
|
|
spacing: 4,
|
|
children: [
|
|
Widget.Box({
|
|
class_name: "album-art-big",
|
|
css: player.bind("cover_path").as((url) => {
|
|
if (url == undefined) {
|
|
return `
|
|
background-color: rgba(0, 0, 0, 0.2);
|
|
background-image: url('${App.configDir}/assets/music-symbolic.svg');
|
|
background-size: 50% 50%;
|
|
background-repeat: no-repeat;
|
|
background-position: center;
|
|
`;
|
|
}
|
|
return `background-image: url('${url}'); background-size: cover;`;
|
|
}),
|
|
}),
|
|
Widget.Box({
|
|
children: [
|
|
Widget.Label({
|
|
class_name: "currently-playing-title",
|
|
label: player.bind("track-title"),
|
|
xalign: 0.5,
|
|
hexpand: true,
|
|
truncate: "end",
|
|
}),
|
|
Widget.Label({
|
|
class_name: "currently-playing-artists",
|
|
label: player.bind("track-artists").as((artists) => {
|
|
return artists.join(", ");
|
|
}),
|
|
xalign: 0.5,
|
|
hexpand: true,
|
|
truncate: "end",
|
|
}),
|
|
],
|
|
vpack: "center",
|
|
vertical: true,
|
|
}),
|
|
// Widget.Icon({
|
|
// class_name: "playback-status",
|
|
// icon: player.bind("play-back-status").as((status) => {
|
|
// if (status == "Playing") {
|
|
// return "media-playback-start";
|
|
// } else if (status == "Paused") {
|
|
// return "media-playback-pause";
|
|
// }
|
|
// return "";
|
|
// }),
|
|
// }),
|
|
],
|
|
});
|
|
}
|