diff options
author | Aylur <[email protected]> | 2024-05-25 14:44:50 +0200 |
---|---|---|
committer | Aylur <[email protected]> | 2024-05-25 14:44:50 +0200 |
commit | 58fa1ab9be7ee8fd4a8e96865121a54d613978cc (patch) | |
tree | 56f01ba49fd2929690a16ac05a4af8f763e6b30b /gjs/sample.js | |
parent | a7e25a4a5fcf4de89fe5a149a9aaf50a92be7af1 (diff) |
separate node and gjs into its own package
Diffstat (limited to 'gjs/sample.js')
-rwxr-xr-x | gjs/sample.js | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/gjs/sample.js b/gjs/sample.js new file mode 100755 index 0000000..2aa6145 --- /dev/null +++ b/gjs/sample.js @@ -0,0 +1,43 @@ +#!/usr/bin/env -S gjs -m +import { Variable, App, Widget, Astal, bind } from "./dist/index.js" +import Playerctl from "gi://Playerctl" + +// state +const player = Playerctl.Player.new("spotify") +const date = Variable("").poll(1000, "date") +const title = Variable(player.get_title()).observe(player, "metadata", () => player.get_title()) + +// ui +function Bar(monitor) { + return Widget.Window( + { + monitor, + application: App, + exclusivity: Astal.Exclusivity.EXCLUSIVE, + anchor: Astal.WindowAnchor.BOTTOM | + Astal.WindowAnchor.LEFT | + Astal.WindowAnchor.RIGHT, + }, + Widget.CenterBox({ + startWidget: Widget.Label({ + label: date(l => `Current date: ${l}`), + }), + endWidget: Widget.Label({ + label: bind(title).as(t => `Title: ${t}`), + }), + }), + ) +} + +// main +App.start({ + requestHandler(msg, res) { + switch (msg) { + case "inspector": return res(App.inspector()) + case "quit": return res(App.quit()) + default: return App.eval(msg).then(res).catch(console.error) + } + }, +}, () => { + Bar(0) +}) |