package main import ( "os" "sync" "gioui.org/app" "git.mstar.dev/mstar/goutils/other" "git.mstar.dev/mstar/timer/shared" "git.mstar.dev/mstar/timer/timer" "github.com/rs/zerolog/log" ) func main() { other.SetupFlags() other.ConfigureLoggingFromCliArgs() // Create window struct outside. Doesn't cause any renders yet windows := []*app.Window{ new(app.Window), } var wg sync.WaitGroup for _, window := range windows { wg.Add(1) go windowLauncher(window, &wg) } go func() { wg.Wait() log.Info().Msg("All windows closed, exiting") os.Exit(0) }() app.Main() } func windowLauncher(window *app.Window, wg *sync.WaitGroup) { defer wg.Done() log.Info().Msg("Starting window") err := shared.Run(window, &timer.StateEnterTime{}) if err != nil { log.Fatal().Err(err).Msg("Failed to run main window") } }