33 lines
1.1 KiB
TypeScript
33 lines
1.1 KiB
TypeScript
import { Astal } from "astal/gtk4";
|
|
import Notifd from "gi://AstalNotifd";
|
|
import Hyprland from "gi://AstalHyprland";
|
|
import { bind } from "astal";
|
|
import { NotificationWidget } from "./modules/Notification";
|
|
import { hyprToGdk } from "../../util/hyprland";
|
|
|
|
export default function Notifications() {
|
|
const notifd = Notifd.get_default();
|
|
const hyprland = Hyprland.get_default();
|
|
const { TOP, RIGHT } = Astal.WindowAnchor;
|
|
|
|
return (
|
|
<window
|
|
name="notifications"
|
|
gdkmonitor={bind(hyprland, "focusedMonitor").as(
|
|
(focused: Hyprland.Monitor) => hyprToGdk(focused),
|
|
)}
|
|
anchor={TOP | RIGHT}
|
|
visible={bind(notifd, "notifications").as(
|
|
(notifications) => notifications.length > 0,
|
|
)}
|
|
child={
|
|
<box vertical={true} cssClasses={["notifications"]}>
|
|
{bind(notifd, "notifications").as((notifications) =>
|
|
notifications.map((n) => <NotificationWidget notification={n} />),
|
|
)}
|
|
</box>
|
|
}
|
|
/>
|
|
);
|
|
}
|