import { bind } from "astal" import { Astal, Gtk, Widget } from "astal/gtk3" import Notif from "gi://AstalNotifd" import Pango from "gi://Pango?version=1.0" const notifs = Notif.get_default() const { TOP, RIGHT, BOTTOM } = Astal.WindowAnchor const notifPlaceholder = "/home/protoshark/.config/ags/assets/notif.svg" let notifWindow: Widget.Window function NewNotif(notif: Notif.Notification, inPanel: boolean = true) { return {notif.actions.map(action => )} } function NotifPanel() { return {notifs.notifications.map(n => NewNotif(n, false))} } function notify(notif: Notif.Notification) { let thisNotif = NewNotif(notif) if (notifWindow) { let os = notifWindow.get_child().overlays let top = 12 for (let i = os.length-1; i > 0; i--) { top += thisNotif.get_preferred_height()[0] - 40 if (os[i].get_preferred_width()[0] >= 352) { os[i].css = `margin-top: ${top}px;` } } notifWindow.get_child().add_overlay(thisNotif) notifWindow.get_child().get_child().heightRequest = os[1].get_preferred_height()[0] + thisNotif.get_preferred_height()[0] } else { notifWindow = } setTimeout(() => { let os = notifWindow.get_child().overlays thisNotif.css = `margin-right: -352px; margin-top: ${thisNotif.get_preferred_height()[0]-thisNotif.get_child().get_preferred_height()[0]-52}px; transition: cubic-bezier(0.64, 0, 0.78, 0) 0.3s;` setTimeout(() => { let os = notifWindow.get_child().overlays notifWindow.get_child().remove(thisNotif) if (os.length < 3) { notifWindow.destroy() notifWindow = null } }, 400) }, 3000) } function notifCount() { return } export default function notifWidget() { return }