diff --git a/v3/examples/systray/main.go b/v3/examples/systray/main.go index 2767c43e..592ce58c 100644 --- a/v3/examples/systray/main.go +++ b/v3/examples/systray/main.go @@ -48,6 +48,8 @@ func main() { } myMenu := app.NewMenu() + myMenu.Add("Wails").SetBitmap(icons.WailsLogoBlackTransparent).SetEnabled(false) + myMenu.Add("Hello World!").OnClick(func(ctx *application.Context) { println("Hello World!") q := application.QuestionDialog().SetTitle("Ready?").SetMessage("Are you feeling ready?") diff --git a/v3/pkg/application/systemtray_linux.go b/v3/pkg/application/systemtray_linux.go index ac9b2981..43501c95 100644 --- a/v3/pkg/application/systemtray_linux.go +++ b/v3/pkg/application/systemtray_linux.go @@ -56,6 +56,11 @@ type systrayMenuItem struct { dbusItem *dbusMenu } +func (s *systrayMenuItem) setBitmap(data []byte) { + s.dbusItem.V1["icon-data"] = dbus.MakeVariant(data) + s.sysTray.update(s) +} + func (s *systrayMenuItem) setTooltip(v string) { s.dbusItem.V1["tooltip"] = dbus.MakeVariant(v) s.sysTray.update(s) @@ -129,6 +134,9 @@ func (s *linuxSystemTray) processMenu(menu *Menu, parentId int32) { if item.label != "" { menuItem.V1["label"] = dbus.MakeVariant(item.label) } + if item.bitmap != nil { + menuItem.V1["icon-data"] = dbus.MakeVariant(item.bitmap) + } switch item.itemType { case checkbox: menuItem.V1["toggle-type"] = dbus.MakeVariant("checkmark") @@ -446,6 +454,13 @@ func (s *linuxSystemTray) createPropSpec() map[string]map[string]*prop.Prop { Emit: prop.EmitTrue, Callback: nil, }, + "IconData": { + Value: "", + Writable: false, + Emit: prop.EmitTrue, + Callback: nil, + }, + "IconName": { Value: "", Writable: false,