import { App } from "astal/gtk3" import { Variable, GLib, bind } from "astal" import { Astal, Gtk, Gdk } from "astal/gtk3" import Hyprland from "gi://AstalHyprland" import Mpris from "gi://AstalMpris" import Battery from "gi://AstalBattery" import Wp from "gi://AstalWp" import Network from "gi://AstalNetwork" import Tray from "gi://AstalTray" function SysTray() { const tray = Tray.get_default() return {bind(tray, "items").as(items => items.map(item => ( ["dbusmenu", ag])} menuModel={bind(item, "menuModel")}> )))} } function Wifi() { const network = Network.get_default() const wifi = bind(network, "wifi") return {wifi.as(wifi => wifi && ( ))} } function AudioSlider() { const speaker = Wp.get_default()?.audio.defaultSpeaker! return speaker.volume = value} value={bind(speaker, "volume")} /> } function BatteryLevel() { const bat = Battery.get_default() return } function Media() { const mpris = Mpris.get_default() return {bind(mpris, "players").as(ps => ps[0] ? ( `background-image: url('${cover}');` )} /> ) : ( } function Workspaces() { const hypr = Hyprland.get_default() return {bind(hypr, "focusedWorkspace").as(fw => { if (!fw) return null const currentChunkStart = Math.floor((fw.id - 1) / 5) * 5 + 1 const visibleIds = Array.from({ length: 5 }, (_, i) => currentChunkStart + i) return visibleIds.map(id => { const ws = hypr.workspaces.find(w => w.id === id) return }) })} } function FocusedClient() { const hypr = Hyprland.get_default() const focused = bind(hypr, "focusedClient") return {focused.as(client => ( client && } function Time({ format = "%H:%M %a %b %e" }) { const time = Variable("").poll(1000, () => GLib.DateTime.new_now_local().format(format)!) return