diff --git a/bridge/bridge.go b/bridge/bridge.go index b161ee6..849fac9 100644 --- a/bridge/bridge.go +++ b/bridge/bridge.go @@ -6,11 +6,13 @@ import ( "os" "os/exec" "path/filepath" - "runtime" "strings" + sysruntime "runtime" + "github.com/klauspost/cpuid/v2" "github.com/wailsapp/wails/v2/pkg/options" + "github.com/wailsapp/wails/v2/pkg/runtime" "gopkg.in/yaml.v3" ) @@ -24,8 +26,8 @@ var isStartup = true var Env = &EnvResult{ BasePath: "", AppName: "", - OS: runtime.GOOS, - ARCH: runtime.GOARCH, + OS: sysruntime.GOOS, + ARCH: sysruntime.GOARCH, X64Level: cpuid.CPU.X64Level(), FromTaskSch: false, } @@ -124,3 +126,7 @@ func (a *App) GetInterfaces() FlagResult { return FlagResult{true, strings.Join(interfaceNames, "|")} } + +func (a *App) ShowMainWindow() { + runtime.WindowShow(a.Ctx) +} diff --git a/bridge/tray_linux.go b/bridge/tray_linux.go index 97708e5..0f325fd 100644 --- a/bridge/tray_linux.go +++ b/bridge/tray_linux.go @@ -9,7 +9,9 @@ import ( "github.com/wailsapp/wails/v2/pkg/runtime" ) -func InitTray(a *App, icon []byte, fs embed.FS) {} +func InitTray(a *App, icon []byte, fs embed.FS) (trayStart, trayEnd func()) { + return func() {}, func() {} +} func (a *App) UpdateTray(tray TrayContent) {} diff --git a/bridge/tray_windows.go b/bridge/tray_others.go similarity index 64% rename from bridge/tray_windows.go rename to bridge/tray_others.go index c693a4a..b2c2a3f 100644 --- a/bridge/tray_windows.go +++ b/bridge/tray_others.go @@ -1,4 +1,4 @@ -//go:build windows +//go:build windows || darwin package bridge @@ -7,13 +7,11 @@ import ( "log" "os" - sysruntime "runtime" - "github.com/energye/systray" "github.com/wailsapp/wails/v2/pkg/runtime" ) -func InitTray(a *App, icon []byte, fs embed.FS) { +func InitTray(a *App, icon []byte, fs embed.FS) (trayStart, trayEnd func()) { src := "frontend/dist/icons/" dst := "data/.cache/icons/" @@ -37,23 +35,27 @@ func InitTray(a *App, icon []byte, fs embed.FS) { } } - go func() { - sysruntime.LockOSThread() - defer sysruntime.UnlockOSThread() - systray.Run(func() { - systray.SetIcon([]byte(icon)) + isDarwin := Env.OS == "darwin" + + return systray.RunWithExternalLoop(func() { + systray.SetIcon([]byte(icon)) + systray.SetTooltip("GUI.for.Cores") + systray.SetOnRClick(func(menu systray.IMenu) { menu.ShowMenu() }) + if isDarwin { + systray.SetOnClick(func(menu systray.IMenu) { menu.ShowMenu() }) + } else { systray.SetTitle("GUI.for.Cores") - systray.SetTooltip("GUI.for.Cores") - systray.SetOnClick(func(menu systray.IMenu) { runtime.WindowShow(a.Ctx) }) - systray.SetOnRClick(func(menu systray.IMenu) { menu.ShowMenu() }) - - // Ensure the tray is still available if rolling-release fails - mRestart := systray.AddMenuItem("Restart", "Restart") - mExit := systray.AddMenuItem("Exit", "Exit") - mRestart.Click(func() { a.RestartApp() }) - mExit.Click(func() { a.ExitApp() }) - }, nil) - }() + systray.SetOnClick(func(menu systray.IMenu) { a.ShowMainWindow() }) + } + + // Ensure the tray is still available if rolling-release fails + mShowWindow := systray.AddMenuItem("Show Main Window", "Show Main Window") + mRestart := systray.AddMenuItem("Restart", "Restart") + mExit := systray.AddMenuItem("Exit", "Exit") + mShowWindow.Click(func() { a.ShowMainWindow() }) + mRestart.Click(func() { a.RestartApp() }) + mExit.Click(func() { a.ExitApp() }) + }, nil) } func (a *App) UpdateTrayMenus(menus []MenuItem) { @@ -78,7 +80,8 @@ func createMenuItem(menu MenuItem, a *App, parent *systray.MenuItem) { } else { m = parent.AddSubMenuItem(menu.Text, menu.Tooltip) } - m.Click(func() { runtime.EventsEmit(a.Ctx, menu.Event) }) + + m.Click(func() { go runtime.EventsEmit(a.Ctx, menu.Event) }) if menu.Checked { m.Check() diff --git a/frontend/src/bridge/app.ts b/frontend/src/bridge/app.ts index f2d4e30..2826490 100644 --- a/frontend/src/bridge/app.ts +++ b/frontend/src/bridge/app.ts @@ -5,6 +5,8 @@ export const RestartApp = App.RestartApp export const ExitApp = App.ExitApp +export const ShowMainWindow = App.ShowMainWindow + export const UpdateTray = async (tray: TrayContent) => { const { icon = '', title = '', tooltip = '' } = tray await App.UpdateTray({ icon, title, tooltip }) diff --git a/frontend/src/lang/locale/en.ts b/frontend/src/lang/locale/en.ts index 268e25a..ed87120 100644 --- a/frontend/src/lang/locale/en.ts +++ b/frontend/src/lang/locale/en.ts @@ -613,6 +613,7 @@ export default { fallback: '🐟 Fallback' }, tray: { + showMainWindow: 'Show Main Window', restart: 'Restart', restartTip: 'Restart App', exit: 'Exit', diff --git a/frontend/src/lang/locale/zh.ts b/frontend/src/lang/locale/zh.ts index 33dfbed..b4427d6 100644 --- a/frontend/src/lang/locale/zh.ts +++ b/frontend/src/lang/locale/zh.ts @@ -612,6 +612,7 @@ export default { fallback: '🐟 漏网之鱼' }, tray: { + showMainWindow: '显示主窗口', restart: '重启', restartTip: '重启程序', exit: '退出', diff --git a/frontend/src/utils/tray.ts b/frontend/src/utils/tray.ts index 8e52065..2d4d9ce 100644 --- a/frontend/src/utils/tray.ts +++ b/frontend/src/utils/tray.ts @@ -1,7 +1,15 @@ import i18n from '@/lang' import { Theme, type MenuItem, Color, Lang } from '@/constant' import { useAppSettingsStore, useKernelApiStore, useEnvStore, usePluginsStore } from '@/stores' -import { Notify, RestartApp, EventsOn, EventsOff, UpdateTray, UpdateTrayMenus } from '@/bridge' +import { + Notify, + RestartApp, + EventsOn, + EventsOff, + UpdateTray, + UpdateTrayMenus, + ShowMainWindow +} from '@/bridge' import { debounce, exitApp, @@ -145,6 +153,16 @@ const getTrayMenus = () => { } const trayMenus: MenuItem[] = [ + { + type: 'item', + text: 'tray.showMainWindow', + hidden: envStore.env.os !== 'darwin', + event: ShowMainWindow + }, + { + type: 'separator', + hidden: envStore.env.os !== 'darwin' + }, { type: 'item', text: 'kernel.mode', @@ -370,6 +388,9 @@ export const updateTrayMenus = debounce(async () => { const trayMenus = getTrayMenus() const trayIcons = getTrayIcons() - await UpdateTray({ icon: trayIcons, title: APP_TITLE, tooltip: APP_TITLE + ' ' + APP_VERSION }) + const isDarwin = useEnvStore().env.os === 'darwin' + const title = isDarwin ? '' : APP_TITLE + + await UpdateTray({ icon: trayIcons, title, tooltip: APP_TITLE + ' ' + APP_VERSION }) await UpdateTrayMenus(trayMenus as any) }, 500) diff --git a/frontend/wailsjs/go/bridge/App.d.ts b/frontend/wailsjs/go/bridge/App.d.ts index 70f1e30..dbe5594 100755 --- a/frontend/wailsjs/go/bridge/App.d.ts +++ b/frontend/wailsjs/go/bridge/App.d.ts @@ -54,6 +54,8 @@ export function Requests(arg1:string,arg2:string,arg3:{[key: string]: string},ar export function RestartApp():Promise; +export function ShowMainWindow():Promise; + export function StartServer(arg1:string,arg2:string):Promise; export function StopServer(arg1:string):Promise; diff --git a/frontend/wailsjs/go/bridge/App.js b/frontend/wailsjs/go/bridge/App.js index fe65c66..acc7282 100755 --- a/frontend/wailsjs/go/bridge/App.js +++ b/frontend/wailsjs/go/bridge/App.js @@ -106,6 +106,10 @@ export function RestartApp() { return window['go']['bridge']['App']['RestartApp'](); } +export function ShowMainWindow() { + return window['go']['bridge']['App']['ShowMainWindow'](); +} + export function StartServer(arg1, arg2) { return window['go']['bridge']['App']['StartServer'](arg1, arg2); } diff --git a/frontend/wailsjs/go/models.ts b/frontend/wailsjs/go/models.ts index b3fa6b0..d695ca5 100755 --- a/frontend/wailsjs/go/models.ts +++ b/frontend/wailsjs/go/models.ts @@ -67,7 +67,7 @@ export namespace bridge { } } export class IOOptions { - + Mode: string; static createFrom(source: any = {}) { return new IOOptions(source); @@ -75,7 +75,7 @@ export namespace bridge { constructor(source: any = {}) { if ('string' === typeof source) source = JSON.parse(source); - + this.Mode = source["Mode"]; } } export class MenuItem { @@ -121,7 +121,9 @@ export namespace bridge { } } export class RequestOptions { - + Proxy: string; + Insecure: boolean; + Timeout: number; static createFrom(source: any = {}) { return new RequestOptions(source); @@ -129,7 +131,9 @@ export namespace bridge { constructor(source: any = {}) { if ('string' === typeof source) source = JSON.parse(source); - + this.Proxy = source["Proxy"]; + this.Insecure = source["Insecure"]; + this.Timeout = source["Timeout"]; } } export class TrayContent { diff --git a/go.mod b/go.mod index a0e1eb0..3947d62 100644 --- a/go.mod +++ b/go.mod @@ -6,15 +6,14 @@ toolchain go1.21.10 require ( github.com/shirou/gopsutil v3.21.11+incompatible - github.com/wailsapp/wails/v2 v2.9.1 + github.com/wailsapp/wails/v2 v2.9.2 ) require ( - github.com/energye/systray v1.0.2 github.com/klauspost/cpuid/v2 v2.2.8 github.com/oschwald/geoip2-golang v1.11.0 github.com/robfig/cron/v3 v3.0.1 - golang.org/x/text v0.16.0 + golang.org/x/text v0.18.0 gopkg.in/yaml.v3 v3.0.1 ) @@ -28,6 +27,7 @@ require ( require ( github.com/bep/debounce v1.2.1 // indirect + github.com/energye/systray v1.0.2 github.com/gen2brain/beeep v0.0.0-20240516210008-9c006672e7f4 github.com/go-ole/go-ole v1.3.0 // indirect github.com/godbus/dbus/v5 v5.1.0 // indirect @@ -46,17 +46,19 @@ require ( github.com/pkg/errors v0.9.1 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect - github.com/samber/lo v1.44.0 // indirect + github.com/samber/lo v1.47.0 // indirect github.com/tklauser/go-sysconf v0.3.14 // indirect github.com/tklauser/numcpus v0.8.0 // indirect - github.com/tkrajina/go-reflector v0.5.6 // indirect + github.com/tkrajina/go-reflector v0.5.8 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/valyala/fasttemplate v1.2.2 // indirect - github.com/wailsapp/go-webview2 v1.0.10 // indirect + github.com/wailsapp/go-webview2 v1.0.16 // indirect github.com/wailsapp/mimetype v1.4.1 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect - golang.org/x/crypto v0.24.0 // indirect - golang.org/x/net v0.26.0 // indirect - golang.org/x/sys v0.21.0 + golang.org/x/crypto v0.27.0 // indirect + golang.org/x/net v0.29.0 // indirect + golang.org/x/sys v0.25.0 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect ) + +replace github.com/energye/systray => github.com/mklnz/systray v1.0.3-alpha.1 diff --git a/go.sum b/go.sum index ed57d5d..8537778 100644 --- a/go.sum +++ b/go.sum @@ -3,8 +3,6 @@ github.com/bep/debounce v1.2.1/go.mod h1:H8yggRPQKLUhUoqrJC1bO2xNya7vanpDl7xR3IS github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/energye/systray v1.0.2 h1:63R4prQkANtpM2CIA4UrDCuwZFt+FiygG77JYCsNmXc= -github.com/energye/systray v1.0.2/go.mod h1:sp7Q/q/I4/w5ebvpSuJVep71s9Bg7L9ZVp69gBASehM= github.com/gen2brain/beeep v0.0.0-20240516210008-9c006672e7f4 h1:ygs9POGDQpQGLJPlq4+0LBUmMBNox1N4JSpw+OETcvI= github.com/gen2brain/beeep v0.0.0-20240516210008-9c006672e7f4/go.mod h1:0W7dI87PvXJ1Sjs0QPvWXKcQmNERY77e8l7GFhZB/s4= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= @@ -50,6 +48,8 @@ github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovk github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mklnz/systray v1.0.3-alpha.1 h1:92NbWMoPjrJ7jMb7gGGvkM6u5vwxyyzt8Nz71/Hz5tY= +github.com/mklnz/systray v1.0.3-alpha.1/go.mod h1:sp7Q/q/I4/w5ebvpSuJVep71s9Bg7L9ZVp69gBASehM= github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d h1:VhgPp6v9qf9Agr/56bj7Y/xa04UccTW04VP0Qed4vnQ= github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U= github.com/oschwald/geoip2-golang v1.11.0 h1:hNENhCn1Uyzhf9PTmquXENiWS6AlxAEnBII6r8krA3w= @@ -71,8 +71,8 @@ github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzG github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= -github.com/samber/lo v1.44.0 h1:5il56KxRE+GHsm1IR+sZ/6J42NODigFiqCWpSc2dybA= -github.com/samber/lo v1.44.0/go.mod h1:RmDH9Ct32Qy3gduHQuKJ3gW1fMHAnE/fAzQuf6He5cU= +github.com/samber/lo v1.47.0 h1:z7RynLwP5nbyRscyvcD043DWYoOcYRv3mV8lBeqOCLc= +github.com/samber/lo v1.47.0/go.mod h1:RmDH9Ct32Qy3gduHQuKJ3gW1fMHAnE/fAzQuf6He5cU= github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI= github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= @@ -85,25 +85,25 @@ github.com/tklauser/go-sysconf v0.3.14 h1:g5vzr9iPFFz24v2KZXs/pvpvh8/V9Fw6vQK5ZZ github.com/tklauser/go-sysconf v0.3.14/go.mod h1:1ym4lWMLUOhuBOPGtRcJm7tEGX4SCYNEEEtghGG/8uY= github.com/tklauser/numcpus v0.8.0 h1:Mx4Wwe/FjZLeQsK/6kt2EOepwwSl7SmJrK5bV/dXYgY= github.com/tklauser/numcpus v0.8.0/go.mod h1:ZJZlAY+dmR4eut8epnzf0u/VwodKmryxR8txiloSqBE= -github.com/tkrajina/go-reflector v0.5.6 h1:hKQ0gyocG7vgMD2M3dRlYN6WBBOmdoOzJ6njQSepKdE= -github.com/tkrajina/go-reflector v0.5.6/go.mod h1:ECbqLgccecY5kPmPmXg1MrHW585yMcDkVl6IvJe64T4= +github.com/tkrajina/go-reflector v0.5.8 h1:yPADHrwmUbMq4RGEyaOUpz2H90sRsETNVpjzo3DLVQQ= +github.com/tkrajina/go-reflector v0.5.8/go.mod h1:ECbqLgccecY5kPmPmXg1MrHW585yMcDkVl6IvJe64T4= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo= github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= -github.com/wailsapp/go-webview2 v1.0.10 h1:PP5Hug6pnQEAhfRzLCoOh2jJaPdrqeRgJKZhyYyDV/w= -github.com/wailsapp/go-webview2 v1.0.10/go.mod h1:Uk2BePfCRzttBBjFrBmqKGJd41P6QIHeV9kTgIeOZNo= +github.com/wailsapp/go-webview2 v1.0.16 h1:wffnvnkkLvhRex/aOrA3R7FP7rkvOqL/bir1br7BekU= +github.com/wailsapp/go-webview2 v1.0.16/go.mod h1:Uk2BePfCRzttBBjFrBmqKGJd41P6QIHeV9kTgIeOZNo= github.com/wailsapp/mimetype v1.4.1 h1:pQN9ycO7uo4vsUUuPeHEYoUkLVkaRntMnHJxVwYhwHs= github.com/wailsapp/mimetype v1.4.1/go.mod h1:9aV5k31bBOv5z6u+QP8TltzvNGJPmNJD4XlAL3U+j3o= -github.com/wailsapp/wails/v2 v2.9.1 h1:irsXnoQrCpeKzKTYZ2SUVlRRyeMR6I0vCO9Q1cvlEdc= -github.com/wailsapp/wails/v2 v2.9.1/go.mod h1:7maJV2h+Egl11Ak8QZN/jlGLj2wg05bsQS+ywJPT0gI= +github.com/wailsapp/wails/v2 v2.9.2 h1:Xb5YRTos1w5N7DTMyYegWaGukCP2fIaX9WF21kPPF2k= +github.com/wailsapp/wails/v2 v2.9.2/go.mod h1:uehvlCwJSFcBq7rMCGfk4rxca67QQGsbg5Nm4m9UnBs= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= -golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= -golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= +golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A= +golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70= golang.org/x/net v0.0.0-20210505024714-0287a6fb4125/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= -golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= +golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo= +golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200810151505-1b9f1253b3ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -113,12 +113,12 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= -golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= +golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= +golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= diff --git a/main.go b/main.go index 3be922e..999840f 100644 --- a/main.go +++ b/main.go @@ -35,6 +35,8 @@ func main() { bridge.AddMenusForDarwin(appMenu, app) } + trayStart, _ := bridge.InitTray(app, icon, assets) + // Create application with options err := wails.Run(&options.App{ MinWidth: 600, @@ -87,9 +89,9 @@ func main() { OnStartup: func(ctx context.Context) { runtime.LogSetLogLevel(ctx, logger.INFO) app.Ctx = ctx - bridge.InitTray(app, icon, assets) bridge.InitScheduledTasks() bridge.InitNotification(assets) + trayStart() }, OnBeforeClose: func(ctx context.Context) (prevent bool) { runtime.EventsEmit(ctx, "onBeforeExitApp")