mirror of
https://codeberg.org/PLG-Development/PLG-MuDiCS
synced 2026-07-06 00:47:09 +00:00
chore(display): fail visibly when chrome is not installed
This commit is contained in:
+9
-4
@@ -13,16 +13,21 @@ const VERSION = "0.1.0"
|
|||||||
//go:generate go tool templ generate
|
//go:generate go tool templ generate
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
var err error
|
||||||
|
|
||||||
// Ensure local config directory exists
|
// Ensure local config directory exists
|
||||||
_, err := pkg.GetStoragePath()
|
_, err = pkg.GetStoragePath()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
slog.Error("Failed to get storage path", "error", err)
|
slog.Error("Failed to get storage path", "error", err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Open browser window
|
go web.StartWebServer(VERSION)
|
||||||
go pkg.OpenBrowserWindow("http://127.0.0.1:1323")
|
|
||||||
|
|
||||||
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)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+12
-15
@@ -117,24 +117,21 @@ func RunShellCommand(cmd *exec.Cmd) CommandResponse {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func OpenBrowserWindow(url string) error {
|
func OpenBrowserWindow(url string) error {
|
||||||
// Detect available Chromium binary name
|
template := "%s --app='%s' --start-fullscreen --user-data-dir=$(mktemp -d) --autoplay-policy=no-user-gesture-required"
|
||||||
var chromiumBin string
|
|
||||||
for _, b := range []string{"chromium", "chromium-browser"} {
|
|
||||||
if _, err := exec.LookPath(b); err == nil {
|
|
||||||
chromiumBin = b
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
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()
|
|
||||||
|
|
||||||
|
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
|
return nil
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return errors.New("chromium not found in PATH")
|
||||||
|
}
|
||||||
|
|
||||||
func GetStoragePath() (string, error) {
|
func GetStoragePath() (string, error) {
|
||||||
var storagePath string
|
var storagePath string
|
||||||
|
|||||||
Reference in New Issue
Block a user