Added ags

TODO copy ags config
This commit is contained in:
2024-04-16 00:28:26 +02:00
parent be8fbb5d9f
commit 8aa6bcd5cb
125 changed files with 8130 additions and 113 deletions

View File

@@ -1,48 +1,46 @@
const systemtray = await Service.import('systemtray')
import GLib from "gi://GLib"
/** @param {import('types/service/systemtray').TrayItem} item */
const SysTrayItem = item => Widget.Button({
child: Widget.Icon().bind('icon', item, 'icon'),
tooltipMarkup: item.bind('tooltip_markup'),
onPrimaryClick: (_, event) => item.activate(event),
onSecondaryClick: (_, event) => item.openMenu(event),
});
const main = "/tmp/ags/main.js"
const entry = `${App.configDir}/main.ts`
const bundler = GLib.getenv("AGS_BUNDLER") || "bun"
function SysTray() {
return Widget.Box({ children: systemtray.bind('items').transform(i => i.map(SysTrayItem)) });
const v = {
ags: pkg.version?.split(".").map(Number) || [],
expect: [1, 8, 0],
}
function Bar(monitor = 0) {
const lTime = Widget.Label({
label: 'TIME',
});
try {
switch (bundler) {
case "bun": await Utils.execAsync([
"bun", "build", entry,
"--outfile", main,
"--external", "resource://*",
"--external", "gi://*",
"--external", "file://*",
]); break
Utils.interval(1000, () => {
lTime.label = Utils.exec('date +%H:%M');
//date +%d.%m.%Y
});
case "esbuild": await Utils.execAsync([
"esbuild", "--bundle", entry,
"--format=esm",
`--outfile=${main}`,
"--external:resource://*",
"--external:gi://*",
"--external:file://*",
]); break
const bTimeDate = Widget.Box({
children: [lTime]
});
default:
throw `"${bundler}" is not a valid bundler`
}
const bInfo = Widget.Box({
hpack: "end",
children: [SysTray()]
});
if (v.ags[1] < v.expect[1] || v.ags[2] < v.expect[2]) {
print(`my config needs at least v${v.expect.join(".")}, yours is v${v.ags.join(".")}`)
App.quit()
}
return Widget.Window({
monitor,
exclusivity: 'exclusive',
name: `bar ${monitor}`,
anchor: ['top', 'left', 'right'],
child: Widget.CenterBox({
centerWidget: bTimeDate,
endWidget: bInfo,
}),
});
await import(`file://${main}`)
} catch (error) {
console.error(error)
App.quit()
}
export default {
windows: [Bar(1), Bar(2)]
};
export { }