55 lines
1.2 KiB
Go
55 lines
1.2 KiB
Go
package systray
|
|
|
|
import (
|
|
"embed"
|
|
"github.com/wailsapp/wails/v3/pkg/events"
|
|
"time"
|
|
|
|
"github.com/wailsapp/wails/v3/pkg/application"
|
|
)
|
|
|
|
// SetupSystemTray 设置系统托盘及其功能
|
|
func SetupSystemTray(app *application.App, mainWindow *application.WebviewWindow, assets embed.FS) {
|
|
// 创建系统托盘
|
|
systray := app.NewSystemTray()
|
|
|
|
// 设置图标
|
|
iconBytes, _ := assets.ReadFile("appicon.png")
|
|
systray.SetIcon(iconBytes)
|
|
|
|
// 设置标签
|
|
systray.SetLabel("VoidRaft")
|
|
|
|
// 创建托盘菜单
|
|
menu := app.NewMenu()
|
|
menu.Add("显示主窗口").OnClick(func(data *application.Context) {
|
|
mainWindow.Show()
|
|
})
|
|
menu.AddSeparator()
|
|
menu.Add("退出").OnClick(func(data *application.Context) {
|
|
app.Quit()
|
|
})
|
|
|
|
systray.SetMenu(menu)
|
|
|
|
// 设置点击托盘图标显示主窗口
|
|
systray.OnClick(func() {
|
|
mainWindow.Show()
|
|
})
|
|
|
|
// 不再附加窗口到系统托盘,避免失去焦点自动缩小
|
|
// systray.AttachWindow(mainWindow)
|
|
|
|
// 设置窗口防抖时间
|
|
systray.WindowDebounce(200 * time.Millisecond)
|
|
|
|
// 使用关闭前的事件处理
|
|
mainWindow.RegisterHook(events.Common.WindowClosing, func(event *application.WindowEvent) {
|
|
// 取消默认关闭行为
|
|
event.Cancel()
|
|
// 隐藏窗口
|
|
mainWindow.Hide()
|
|
})
|
|
|
|
}
|