package main import ( "errors" "fmt" "os" "os/exec" "path/filepath" "plg-mudics/shared" ) func openBrowserWindow(url string) error { bins := []string{"chromium", "chromium-browser"} home, err := os.UserHomeDir() if err != nil { return fmt.Errorf("unable to determine user home directory: %w", err) } browserProfileDirPath := filepath.Join(home, ".local", "share", "plg-mudics", "browser-control") if err := os.MkdirAll(browserProfileDirPath, os.ModePerm); err != nil { return fmt.Errorf("failed to create local config directory: %w", err) } args := []string{ fmt.Sprintf("--app=%s", url), fmt.Sprintf("--user-data-dir=%s", browserProfileDirPath), "--disable-features=Translate", } errs := []string{} for _, bin := range bins { cmd := exec.Command(bin, args...) commandOutput := shared.RunShellCommand(cmd) if commandOutput.ExitCode == 0 { return nil } errs = append(errs, commandOutput.Stderr) } return errors.New("failed to open browser window: " + fmt.Sprint(errs)) }