5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-08 07:21:46 +08:00
wails/v3/examples/systray-custom/main.go

71 lines
1.6 KiB
Go

package main
import (
_ "embed"
"github.com/wailsapp/wails/v3/pkg/events"
"log"
"runtime"
"github.com/wailsapp/wails/v3/pkg/application"
"github.com/wailsapp/wails/v3/pkg/icons"
)
func createWindow(app *application.App) *application.WebviewWindow {
window := app.NewWebviewWindowWithOptions(application.WebviewWindowOptions{
Width: 500,
Height: 500,
Name: "Systray Demo Window",
AlwaysOnTop: true,
Hidden: true,
BackgroundColour: application.NewRGB(33, 37, 41),
DisableResize: true,
Windows: application.WindowsWindow{
HiddenOnTaskbar: true,
},
})
window.OnWindowEvent(events.Common.WindowClosing, func(e *application.WindowEvent) {
println("Window Closing")
})
return window
}
func main() {
app := application.New(application.Options{
Name: "Systray Demo",
Description: "A demo of the Systray API",
Assets: application.AlphaAssets,
Windows: application.WindowsOptions{
DisableQuitOnLastWindowClosed: true,
},
Mac: application.MacOptions{
ActivationPolicy: application.ActivationPolicyAccessory,
},
})
systemTray := app.NewSystemTray()
window := createWindow(app)
menu := app.NewMenu()
menu.Add("Quit").OnClick(func(data *application.Context) {
app.Quit()
})
systemTray.SetMenu(menu)
if runtime.GOOS == "darwin" {
systemTray.SetTemplateIcon(icons.SystrayMacTemplate)
}
systemTray.OnClick(func() {
println("Creating New Window!")
createWindow(app).Show()
})
systemTray.AttachWindow(window).WindowOffset(5)
err := app.Run()
if err != nil {
log.Fatal(err)
}
}