summaryrefslogtreecommitdiff
path: root/pkgs/astal/src/widget/bar/tray.lua
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/astal/src/widget/bar/tray.lua')
-rw-r--r--pkgs/astal/src/widget/bar/tray.lua34
1 files changed, 34 insertions, 0 deletions
diff --git a/pkgs/astal/src/widget/bar/tray.lua b/pkgs/astal/src/widget/bar/tray.lua
new file mode 100644
index 0000000..9046494
--- /dev/null
+++ b/pkgs/astal/src/widget/bar/tray.lua
@@ -0,0 +1,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