local astal = require("astal") local Widget = require("astal.gtk3.widget") local Tray = astal.require("AstalTray") local lib = require("lib") local bind = astal.bind function Item(item) return Widget.MenuButton({ class_name = "menubtn", tooltip_markup = bind(item, "tooltip_markup"), use_popover = false, menu_model = bind(item, "menu-model"), action_group = bind(item, "action-group"):as( function(ag) return { "dbusmenu", ag } end ), Widget.Icon({ gicon = bind(item, "gicon"), }), }) end function Items(items) return lib.map(items, Item) end return function() local tray = Tray.get_default() return Widget.Box({ class_name = "tray", visible = bind(tray, "items"):as(lib.is_true), bind(tray, "items"):as(Items) }) end