summaryrefslogtreecommitdiff
path: root/src/modules/popdowns/sideright.tsx
diff options
context:
space:
mode:
author2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-04-02 15:06:27 +1100
committer2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-04-02 15:06:27 +1100
commite9eba2e2914e6c9aa01dd3d6267c969bcba3bb2f (patch)
tree9ce2fad274d4978d9531b5c57c2ceb4d67c219b5 /src/modules/popdowns/sideright.tsx
parentsidebar: add date time to time pane (diff)
downloadcaelestia-shell-e9eba2e2914e6c9aa01dd3d6267c969bcba3bb2f.tar.gz
caelestia-shell-e9eba2e2914e6c9aa01dd3d6267c969bcba3bb2f.tar.bz2
caelestia-shell-e9eba2e2914e6c9aa01dd3d6267c969bcba3bb2f.zip
cleanup: remove popdown stuff
Popdowns were replaced with the sidebar
Diffstat (limited to 'src/modules/popdowns/sideright.tsx')
-rw-r--r--src/modules/popdowns/sideright.tsx146
1 files changed, 0 insertions, 146 deletions
diff --git a/src/modules/popdowns/sideright.tsx b/src/modules/popdowns/sideright.tsx
deleted file mode 100644
index 5e873b3..0000000
--- a/src/modules/popdowns/sideright.tsx
+++ /dev/null
@@ -1,146 +0,0 @@
-import SWeather, { type WeatherData } from "@/services/weather";
-import { ellipsize } from "@/utils/strings";
-import { bindCurrentTime } from "@/utils/system";
-import { setupCustomTooltip, Calendar as WCal } from "@/utils/widgets";
-import PopupWindow from "@/widgets/popupwindow";
-import { bind, timeout } from "astal";
-import { Astal, Gtk, type Gdk } from "astal/gtk3";
-
-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 = () => (
- <box className="time">
- <box hexpand halign={Gtk.Align.CENTER}>
- <label label={bindCurrentTime("%I:%M:%S")} />
- <label className="ampm" label={bindCurrentTime("%p", c => (c.get_hour() < 12 ? "AM" : "PM"))} />
- </box>
- </box>
-);
-
-const Calendar = () => (
- <box className="calendar">
- <eventbox
- setup={self => {
- 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());
- }
- });
- }}
- >
- <WCal
- hexpand
- showDetails={false}
- setup={self => {
- const update = () =>
- timeout(0.1, () => {
- 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();
- }}
- />
- </eventbox>
- </box>
-);
-
-const Weather = () => {
- const weather = SWeather.get_default();
-
- return (
- <box vertical className="weather">
- <centerbox className="current">
- <label
- halign={Gtk.Align.START}
- valign={Gtk.Align.CENTER}
- className="status-icon"
- label={bind(weather, "icon")}
- />
- <box vertical halign={Gtk.Align.CENTER} valign={Gtk.Align.CENTER} className="status">
- <box halign={Gtk.Align.CENTER} className="temperature">
- <label label={bind(weather, "temperature")} />
- <label
- className={bind(weather, "tempColour").as(c => `temp-icon ${c}`)}
- label={bind(weather, "tempIcon")}
- />
- </box>
- <label label={bind(weather, "condition").as(c => ellipsize(c, 16))} />
- </box>
- <box vertical halign={Gtk.Align.END} valign={Gtk.Align.CENTER} className="other-data">
- <label
- xalign={0}
- label={bind(weather, "wind").as(w => ` ${w}`)}
- setup={self =>
- setupCustomTooltip(
- self,
- bind(weather, "wind").as(w => `${w} wind speed`)
- )
- }
- />
- <label
- xalign={0}
- label={bind(weather, "rainChance").as(r => ` ${r}`)}
- setup={self =>
- setupCustomTooltip(
- self,
- bind(weather, "rainChance").as(r => `${r} chance of rain`)
- )
- }
- />
- </box>
- </centerbox>
- <box className="separator" />
- <box className="forecast">
- {Array.from({ length: 4 }).map((_, i) => (
- <box vertical hexpand className="hour">
- <label
- label={bind(weather, "raw").as(r => {
- const hour = getHoursFromUpdate(r, i + 1);
- return `${hour % 12 || 12}${hour < 12 ? "AM" : "PM"}`;
- })}
- />
- <label
- className="icon"
- label={bind(weather, "raw").as(r =>
- weather.getIcon(weather.forecast[getHoursFromUpdate(r, i + 1)].condition.text)
- )}
- />
- <label
- label={bind(weather, "raw").as(r =>
- weather.getTemp(weather.forecast[getHoursFromUpdate(r, i + 1)])
- )}
- />
- </box>
- ))}
- </box>
- </box>
- );
-};
-
-export default () => (
- <PopupWindow name="sideright">
- <box vertical className="sideright">
- <Time />
- <Calendar />
- <Weather />
- </box>
- </PopupWindow>
-);