chore(display): fail visibly when chrome is not installed

This commit is contained in:
2025-10-21 22:46:55 +02:00
parent da1091c173
commit 8a187385d1
2 changed files with 20 additions and 18 deletions
+9 -4
View File
@@ -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)
}
}
+11 -14
View File
@@ -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) {