From 0274360617a23daf81fb2baf85a1bfebe2b395e8 Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Tue, 11 Feb 2025 20:58:53 +1100 Subject: refactor: astal widget type There is no base type, but the return type of astalify works --- src/modules/bar.tsx | 3 ++- src/utils/types.ts | 3 +++ src/utils/widgets.ts | 7 ++++--- 3 files changed, 9 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/modules/bar.tsx b/src/modules/bar.tsx index 16c505a..ae5cde9 100644 --- a/src/modules/bar.tsx +++ b/src/modules/bar.tsx @@ -4,6 +4,7 @@ import Updates from "@/services/updates"; import { getAppCategoryIcon } from "@/utils/icons"; import { ellipsize } from "@/utils/strings"; import { bindCurrentTime, osIcon } from "@/utils/system"; +import type { AstalWidget } from "@/utils/types"; import { setupCustomTooltip } from "@/utils/widgets"; import type PopupWindow from "@/widgets/popupwindow"; import { execAsync, register, Variable } from "astal"; @@ -20,7 +21,7 @@ import AstalWp01 from "gi://AstalWp"; const hyprland = AstalHyprland.get_default(); const hookFocusedClientProp = ( - self: any, // Ugh why is there no base Widget type + self: AstalWidget, prop: keyof AstalHyprland.Client, callback: (c: AstalHyprland.Client | null) => void ) => { diff --git a/src/utils/types.ts b/src/utils/types.ts index 9a44e51..d2c1943 100644 --- a/src/utils/types.ts +++ b/src/utils/types.ts @@ -1,5 +1,8 @@ +import type { astalify } from "astal/gtk3"; import type AstalHyprland from "gi://AstalHyprland"; +export type AstalWidget = InstanceType>; + export type Address = `0x${string}`; export interface Client { diff --git a/src/utils/widgets.ts b/src/utils/widgets.ts index fe7ff3e..c6f0f19 100644 --- a/src/utils/widgets.ts +++ b/src/utils/widgets.ts @@ -1,8 +1,9 @@ import { Binding, register } from "astal"; import { Astal, astalify, Gtk, Widget, type ConstructProps } from "astal/gtk3"; import AstalHyprland from "gi://AstalHyprland"; +import type { AstalWidget } from "./types"; -export const setupCustomTooltip = (self: any, text: string | Binding) => { +export const setupCustomTooltip = (self: AstalWidget, text: string | Binding) => { if (!text) return null; const window = new Widget.Window({ @@ -27,7 +28,7 @@ export const setupCustomTooltip = (self: any, text: string | Binding) => window.marginLeft = marginLeft; }); - if (text instanceof Binding) self.hook(text, (_: any, v: string) => !v && window.hide()); + if (text instanceof Binding) self.hook(text, (_, v) => !v && window.hide()); self.connect("query-tooltip", () => { if (text instanceof Binding && !text.get()) return false; @@ -54,7 +55,7 @@ export const setupCustomTooltip = (self: any, text: string | Binding) => return window; }; -export const setupChildClickthrough = (self: any) => +export const setupChildClickthrough = (self: AstalWidget) => self.connect("size-allocate", () => self.get_window()?.set_child_input_shapes()); @register() -- cgit v1.2.3-freya