import { bind } from "astal"; import { Astal, Gtk, type Gdk } from "astal/gtk3"; import SWeather, { type WeatherData } from "../../services/weather"; import { ellipsize } from "../../utils/strings"; import { bindCurrentTime } from "../../utils/system"; import { Calendar as WCal } from "../../utils/widgets"; import PopupWindow from "../../widgets/popupwindow"; const getHoursFromUpdate = (data: WeatherData, hours: number) => { const updateTime = data.location.localtime_epoch; const updateHourStart = updateTime - (updateTime % 3600); let nextHour = new Date((updateHourStart + hours * 3600) * 1000).getHours(); if (nextHour >= 24) nextHour -= 24; return nextHour; }; const Time = () => ( ); const Calendar = () => ( { self.connect("button-press-event", (_, event: Gdk.Event) => { if (event.get_button()[1] === Astal.MouseButton.MIDDLE) { const now = new Date(); const child = self.get_child() as WCal | null; if (!child) return; child.select_month(now.getMonth(), now.getFullYear()); } }); }} > { const update = () => { const now = new Date(); if (self.month === now.getMonth() && self.year === now.getFullYear()) self.day = now.getDate(); else self.day = 0; }; self.connect("month-changed", update); self.connect("next-month", update); self.connect("prev-month", update); self.connect("next-year", update); self.connect("prev-year", update); update(); }} /> ); const Weather = () => { const weather = SWeather.get_default(); return ( {Array.from({ length: 4 }).map((_, i) => ( ))} ); }; export default () => ( );