33 lines
730 B
JavaScript
33 lines
730 B
JavaScript
const battery = await Service.import("battery");
|
|
|
|
const BatteryLabel = () => {
|
|
const isVis = Variable(battery.available);
|
|
|
|
const value = battery.bind("percent").as((p) => (p > 0 ? p / 100 : 0));
|
|
const icon = battery
|
|
.bind("percent")
|
|
.as((p) => `battery-level-${Math.floor(p / 10) * 10}-symbolic`);
|
|
|
|
battery.connect("changed", ({ available }) => {
|
|
isVis.value = available;
|
|
});
|
|
|
|
return {
|
|
component: Widget.Box({
|
|
class_name: "battery",
|
|
visible: battery.bind("available"),
|
|
children: [
|
|
Widget.Icon({ icon }),
|
|
Widget.LevelBar({
|
|
widthRequest: 20,
|
|
vpack: "center",
|
|
value,
|
|
}),
|
|
],
|
|
}),
|
|
isVis,
|
|
};
|
|
};
|
|
|
|
export { BatteryLabel };
|