diff options
| author | srdusr <trevorgray@srdusr.com> | 2025-08-30 19:22:59 +0200 |
|---|---|---|
| committer | srdusr <trevorgray@srdusr.com> | 2025-08-30 19:22:59 +0200 |
| commit | 19120d4f9761c67d99ed1ce3da6084b83f5a49c9 (patch) | |
| tree | f234cad1bdad88114a63c9702144da487024967a /.config/ags/widget/notifications/NotificationPopups.ts | |
| parent | 5928998af5404ae2be84c6cecc10ebf84bd3f3ed (diff) | |
| download | dotfiles-19120d4f9761c67d99ed1ce3da6084b83f5a49c9.tar.gz dotfiles-19120d4f9761c67d99ed1ce3da6084b83f5a49c9.zip | |
Linux-specific dotfiles
Diffstat (limited to '.config/ags/widget/notifications/NotificationPopups.ts')
| -rw-r--r-- | .config/ags/widget/notifications/NotificationPopups.ts | 90 |
1 files changed, 0 insertions, 90 deletions
diff --git a/.config/ags/widget/notifications/NotificationPopups.ts b/.config/ags/widget/notifications/NotificationPopups.ts deleted file mode 100644 index a4a2b54..0000000 --- a/.config/ags/widget/notifications/NotificationPopups.ts +++ /dev/null @@ -1,90 +0,0 @@ -import Notification from "./Notification" -import options from "options" - -const notifications = await Service.import("notifications") -const { transition } = options -const { position } = options.notifications -const { timeout, idle } = Utils - -function Animated(id: number) { - const n = notifications.getNotification(id)! - const widget = Notification(n) - - const inner = Widget.Revealer({ - transition: "slide_left", - transition_duration: transition.value, - child: widget, - }) - - const outer = Widget.Revealer({ - transition: "slide_down", - transition_duration: transition.value, - child: inner, - }) - - const box = Widget.Box({ - hpack: "end", - child: outer, - }) - - idle(() => { - outer.reveal_child = true - timeout(transition.value, () => { - inner.reveal_child = true - }) - }) - - return Object.assign(box, { - dismiss() { - inner.reveal_child = false - timeout(transition.value, () => { - outer.reveal_child = false - timeout(transition.value, () => { - box.destroy() - }) - }) - }, - }) -} - -function PopupList() { - const map: Map<number, ReturnType<typeof Animated>> = new Map - const box = Widget.Box({ - hpack: "end", - vertical: true, - css: options.notifications.width.bind().as(w => `min-width: ${w}px;`), - }) - - function remove(_: unknown, id: number) { - map.get(id)?.dismiss() - map.delete(id) - } - - return box - .hook(notifications, (_, id: number) => { - if (id !== undefined) { - if (map.has(id)) - remove(null, id) - - if (notifications.dnd) - return - - const w = Animated(id) - map.set(id, w) - box.children = [w, ...box.children] - } - }, "notified") - .hook(notifications, remove, "dismissed") - .hook(notifications, remove, "closed") -} - -export default (monitor: number) => Widget.Window({ - monitor, - name: `notifications${monitor}`, - anchor: position.bind(), - class_name: "notifications", - child: Widget.Box({ - css: "padding: 2px;", - child: PopupList(), - }), -}) |
