mirror of
https://github.com/xsghetti/HyprCrux.git
synced 2025-07-03 22:00:38 -04:00
updates
This commit is contained in:
parent
1f8cb3c145
commit
610604e80f
253 changed files with 27055 additions and 44 deletions
95
.config/ags/old/modules/notifications/NotificationPopups.js
Normal file
95
.config/ags/old/modules/notifications/NotificationPopups.js
Normal file
|
@ -0,0 +1,95 @@
|
|||
import Notification from "./Notification.js"
|
||||
import options from "../../options.js"
|
||||
|
||||
const notifications = await Service.import("notifications")
|
||||
const { transitionDuration } = options
|
||||
const { position, blacklist } = options.notifications
|
||||
const { timeout, idle } = Utils
|
||||
|
||||
function Animated(id) {
|
||||
const n = notifications.getNotification(id)
|
||||
const widget = Notification(n)
|
||||
|
||||
const inner = Widget.Revealer({
|
||||
css: "border: 1px solid magenta;",
|
||||
transition: "slide_left",
|
||||
transition_duration: transitionDuration,
|
||||
child: widget,
|
||||
})
|
||||
|
||||
const outer = Widget.Revealer({
|
||||
css: "border: 1px solid yellow;",
|
||||
transition: "slide_down",
|
||||
transition_duration: transitionDuration,
|
||||
child: inner,
|
||||
})
|
||||
|
||||
const box = Widget.Box({
|
||||
hpack: "end",
|
||||
child: outer,
|
||||
})
|
||||
|
||||
idle(() => {
|
||||
outer.reveal_child = true
|
||||
timeout(transitionDuration, () => {
|
||||
inner.reveal_child = true
|
||||
})
|
||||
})
|
||||
|
||||
return Object.assign(box, {
|
||||
dismiss() {
|
||||
inner.reveal_child = false
|
||||
timeout(transitionDuration, () => {
|
||||
outer.reveal_child = false
|
||||
timeout(transitionDuration, () => {
|
||||
box.destroy()
|
||||
})
|
||||
})
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
function PopupList() {
|
||||
const map = new Map
|
||||
const box = Widget.Box({
|
||||
hpack: "end",
|
||||
vertical: true,
|
||||
css: `min-width: ${options.notifications.width}px;`,
|
||||
})
|
||||
|
||||
function remove(_, id) {
|
||||
map.get(id)?.dismiss()
|
||||
map.delete(id)
|
||||
}
|
||||
|
||||
return box
|
||||
.hook(notifications, (_, id) => {
|
||||
if (id !== undefined) {
|
||||
if (map.has(id))
|
||||
remove(null, id)
|
||||
|
||||
if (blacklist.includes(notifications.getNotification(id).app_name))
|
||||
return
|
||||
|
||||
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) => Widget.Window({
|
||||
monitor,
|
||||
name: `notifications${monitor}`,
|
||||
anchor: position,
|
||||
class_name: "notifications",
|
||||
child: Widget.Box({
|
||||
css: "padding: 2px;",
|
||||
child: PopupList(),
|
||||
}),
|
||||
})
|
Loading…
Add table
Add a link
Reference in a new issue