summaryrefslogtreecommitdiff
path: root/pkgs/astal/src/widget/bar/tray.lua
blob: 90464944364314d3ada78fc9de7d5feabdbd06c9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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.empty):as(lib.neg),
		bind(tray, "items"):as(Items)
	})
end