Skip to content

System Tray

Create a system tray (notification area) application with menus and icons using Fyne.

Show Code
package main
import (
"os"
"path/filepath"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/app"
"fyne.io/fyne/v2/driver/desktop"
"fyne.io/fyne/v2/widget"
)
func main() {
a := app.New()
w := a.NewWindow("SysTray")
// Load local image as tray icon
iconPath := "logo.jpg"
iconData, err := os.ReadFile(filepath.Clean(iconPath))
if err != nil {
panic(err)
}
localIcon := fyne.NewStaticResource("trayIcon", iconData)
if desk, ok := a.(desktop.App); ok {
m := fyne.NewMenu("MyApp",
fyne.NewMenuItem("Show", func() {
w.Show()
}))
desk.SetSystemTrayMenu(m)
desk.SetSystemTrayIcon(localIcon)
}
w.SetContent(widget.NewLabel("Fyne System Tray"))
w.SetCloseIntercept(func() {
w.Hide()
})
w.ShowAndRun()
}