50 lines
1.2 KiB
JavaScript
50 lines
1.2 KiB
JavaScript
const Network = await Service.import("network");
|
|
const Bluetooth = await Service.import("bluetooth");
|
|
|
|
// Widgets
|
|
import { Workspaces, ClientTitle } from "./workspaces.js";
|
|
import { Battery } from "./battery.js";
|
|
import { Date, Time } from "./clock.js";
|
|
|
|
const Left = (monitor) => Widget.Box({
|
|
children: [
|
|
Workspaces(monitor),
|
|
ClientTitle(),
|
|
],
|
|
});
|
|
|
|
const Center = () => Widget.Box({
|
|
children: [ ],
|
|
});
|
|
|
|
const Right = () => Widget.Box({
|
|
hpack: "end",
|
|
children: [
|
|
Battery(),
|
|
Date(),
|
|
Time(),
|
|
],
|
|
});
|
|
|
|
const hyprlandMonitors = Utils.exec(`/bin/sh -c "hyprctl monitors | grep -o '(ID [0-9]*' | awk '{print $2}' | sort"`).split('\n').map(Number);
|
|
|
|
const getHyprlandMonitor = monitor => {
|
|
if (monitor >= hyprlandMonitors.length) {
|
|
return 0;
|
|
}
|
|
return hyprlandMonitors[monitor];
|
|
};
|
|
|
|
export const Bar = (monitor = 0) => Widget.Window({
|
|
name: `bar-${monitor}`, // name has to be unique
|
|
class_name: 'bar',
|
|
monitor,
|
|
anchor: ['top', 'left', 'right'],
|
|
exclusivity: 'exclusive',
|
|
child: Widget.CenterBox({
|
|
start_widget: Left(getHyprlandMonitor(monitor)),
|
|
center_widget: Center(),
|
|
end_widget: Right(),
|
|
}),
|
|
});
|
|
|