import { createBinding, createComputed, For, With } from "ags"; import { Gdk, Gtk } from "ags/gtk4"; import { variableToBoolean } from "../../../modules/utils"; import GObject from "gi://GObject?version=2.0"; import AstalTray from "gi://AstalTray" import Gio from "gi://Gio?version=2.0"; const astalTray = AstalTray.get_default(); export const Tray = () => { const items = createBinding(astalTray, "items").as(items => items.filter(item => item?.gicon)); return {(item: AstalTray.TrayItem) => {([actionGroup, menuModel]: [Gio.ActionGroup, Gio.MenuModel]) => { const popover = Gtk.PopoverMenu.new_from_model(menuModel); popover.insert_action_group("dbusmenu", actionGroup); popover.hasArrow = false; return { const conns: Map = new Map(); const gestureClick = Gtk.GestureClick.new(); gestureClick.set_button(0); self.add_controller(gestureClick); // Set popover parent to this box popover.set_parent(self); conns.set(gestureClick, gestureClick.connect("released", (gesture, _, x, y) => { if(gesture.get_current_button() === Gdk.BUTTON_PRIMARY) { item.activate(x, y); return; } if(gesture.get_current_button() === Gdk.BUTTON_SECONDARY) { item.about_to_show(); popover.popup(); } })) }}> ; }} } }