package main import ( "fmt" "image" _ "image/png" "os" "path/filepath" "strings" "github.com/go-flutter-desktop/go-flutter" "github.com/pkg/errors" ) // vmArguments may be set by hover at compile-time var vmArguments string func main() { // DO NOT EDIT, add options in options.go mainOptions := []flutter.Option{ flutter.OptionVMArguments(strings.Split(vmArguments, ";")), flutter.WindowIcon(iconProvider), } err := flutter.Run(append(options, mainOptions...)...) if err != nil { fmt.Println(err) os.Exit(1) } } func iconProvider() ([]image.Image, error) { execPath, err := os.Executable() if err != nil { return nil, errors.Wrap(err, "failed to resolve executable path") } execPath, err = filepath.EvalSymlinks(execPath) if err != nil { return nil, errors.Wrap(err, "failed to eval symlinks for executable path") } imgFile, err := os.Open(filepath.Join(filepath.Dir(execPath), "assets", "icon.png")) if err != nil { return nil, errors.Wrap(err, "failed to open assets/icon.png") } img, _, err := image.Decode(imgFile) if err != nil { return nil, errors.Wrap(err, "failed to decode image") } return []image.Image{img}, nil }