Added ags
TODO copy ags config
This commit is contained in:
@@ -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 { }
|
||||
|
||||
Reference in New Issue
Block a user