diff options
Diffstat (limited to 'pkgs/astal/src/widget/bar/tray.lua')
-rw-r--r-- | pkgs/astal/src/widget/bar/tray.lua | 34 |
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 |