diff --git a/display/main.go b/display/main.go index 7e1d2af..eeb8c52 100644 --- a/display/main.go +++ b/display/main.go @@ -13,16 +13,21 @@ const VERSION = "0.1.0" //go:generate go tool templ generate func main() { + var err error + // Ensure local config directory exists - _, err := pkg.GetStoragePath() + _, err = pkg.GetStoragePath() if err != nil { slog.Error("Failed to get storage path", "error", err) os.Exit(1) return } - // Open browser window - go pkg.OpenBrowserWindow("http://127.0.0.1:1323") + go web.StartWebServer(VERSION) - web.StartWebServer(VERSION) + err = pkg.OpenBrowserWindow("http://127.0.0.1:1323") + if err != nil { + slog.Error("Failed to open browser window", "error", err) + os.Exit(1) + } } diff --git a/display/pkg/main.go b/display/pkg/main.go index 6a570bd..72be77d 100644 --- a/display/pkg/main.go +++ b/display/pkg/main.go @@ -117,23 +117,20 @@ func RunShellCommand(cmd *exec.Cmd) CommandResponse { } func OpenBrowserWindow(url string) error { - // Detect available Chromium binary name - var chromiumBin string - for _, b := range []string{"chromium", "chromium-browser"} { - if _, err := exec.LookPath(b); err == nil { - chromiumBin = b - break + template := "%s --app='%s' --start-fullscreen --user-data-dir=$(mktemp -d) --autoplay-policy=no-user-gesture-required" + + cmds := []*exec.Cmd{ + exec.Command("bash", "-c", fmt.Sprintf(template, "chromium", url)), + exec.Command("bash", "-c", fmt.Sprintf(template, "chromium-browser", url)), + } + for _, cmd := range cmds { + commandOutput := RunShellCommand(cmd) + if commandOutput.ExitCode == 0 { + return nil } } - if chromiumBin == "" { - return errors.New("chromium or chromium-browser not found in PATH") - } - args := fmt.Sprintf("%s --app='%s' --start-fullscreen --user-data-dir=$(mktemp -d) --autoplay-policy=no-user-gesture-required", chromiumBin, url) - cmd := exec.Command("bash", "-c", args) - _ = cmd.Run() - - return nil + return errors.New("chromium not found in PATH") } func GetStoragePath() (string, error) {