import { Astal, Gdk, Gtk } from "ags/gtk4";
import app from "ags/gtk4/app";
import { createBinding, createState, For, With, Accessor } from "ags";
import { createPoll } from "ags/time";
import Tray from "gi://AstalTray";
import { execAsync } from "ags/process";
import Hyprland from "gi://AstalHyprland";
import { getIconName } from "./utils";
import Wp from "gi://AstalWp";
import Battery from "gi://AstalBattery";
import GLib from "gi://GLib";
const battery = Battery.get_default();
const sensorsAvailable = await execAsync(["sensors"])
.then(() => true)
.catch(() => false);
const wirePlumber = Wp.get_default();
function SysTray(): JSX.Element {
const tray = Tray.get_default();
let items = createBinding(tray, "items");
const init = (btn: Gtk.MenuButton, item: Tray.TrayItem) => {
btn.menuModel = item.menuModel;
btn.insert_action_group("dbusmenu", item.actionGroup);
item.connect("notify::action-group", () => {
btn.insert_action_group("dbusmenu", item.actionGroup);
});
};
return (
{(item: Tray.TrayItem) => {
if (item.iconThemePath) app.add_icons(item.iconThemePath);
return (
init(self, item)}
class="systray"
tooltipMarkup={createBinding(item, "tooltipMarkup")}
menuModel={createBinding(item, "menuModel")}
>
);
}}
);
}
function Left(): JSX.Element {
return (
);
}
function Center(): JSX.Element {
return (
);
}
function Date({ format = "%Y-%m-%d" }): JSX.Element {
const time = createPoll(
"",
60000,
() => GLib.DateTime.new_now_local().format(format)!,
);
return (