//go:build gui // +build gui package main import ( "context" "embed" "log" "net" "github.com/wailsapp/wails/v2/pkg/application" "github.com/wailsapp/wails/v2/pkg/options" "github.com/wailsapp/wails/v2/pkg/options/assetserver" "github.com/wailsapp/wails/v2/pkg/options/mac" srv "rul.sh/vaulterm/server/app" ) //go:embed all:frontend/dist var assets embed.FS func main() { server := srv.NewApp() defer server.Shutdown() // Create wails app appCtx := NewApp() app := application.NewWithOptions(&options.App{ Title: "Vaulterm", Width: 1150, Height: 720, AssetServer: &assetserver.Options{ Assets: assets, }, BackgroundColour: &options.RGBA{R: 27, G: 38, B: 54, A: 1}, OnStartup: func(ctx context.Context) { appCtx.startup(ctx) }, Bind: []interface{}{appCtx}, Mac: &mac.Options{ WebviewIsTransparent: true, }, }) // Run the local server go func() { defer app.Quit() listener, err := net.Listen("tcp", ":0") if err != nil { log.Fatal(err) } port := listener.Addr().(*net.TCPAddr).Port appCtx.localPort = port log.Printf("Starting server on http://localhost:%d\n", port) if err := server.Listener(listener); err != nil { log.Printf("Server error: %s\n", err) } }() if err := app.Run(); err != nil { println("Error:", err.Error()) } }