Files
Ant-Browser/backend/internal/tray/tray.go
T
Ant Browser Release Bot 6f58a6c19a publish: 1.0.0 snapshot (bad2ec1)
channel: master
version: 1.0.0
source-ref: master
published-at-utc: 2026-03-13T15:19:28Z
2026-03-13 23:19:29 +08:00

64 lines
1.1 KiB
Go

//go:build windows
package tray
import (
_ "embed"
"github.com/energye/systray"
)
//go:embed icon.ico
var iconData []byte
// Callbacks 托盘回调
type Callbacks struct {
OnShow func()
OnQuit func()
}
// Run 启动系统托盘(阻塞,需在独立 goroutine 中调用)
func Run(cb Callbacks) {
systray.Run(func() {
systray.SetIcon(iconData)
systray.SetTitle("Ant Chrome")
systray.SetTooltip("Ant Chrome")
mShow := systray.AddMenuItem("显示窗口", "显示主窗口")
systray.AddSeparator()
mQuit := systray.AddMenuItem("退出", "退出应用")
systray.SetOnClick(func(menu systray.IMenu) {
if cb.OnShow != nil {
cb.OnShow()
}
})
systray.SetOnDClick(func(menu systray.IMenu) {
if cb.OnShow != nil {
cb.OnShow()
}
})
mShow.Click(func() {
if cb.OnShow != nil {
cb.OnShow()
}
})
mQuit.Click(func() {
systray.Quit()
if cb.OnQuit != nil {
cb.OnQuit()
}
})
}, func() {
// onExit: 托盘退出时什么都不做,由 OnQuit 回调处理
})
}
// Quit 主动退出托盘循环
func Quit() {
systray.Quit()
}