diff --git a/web/backend/systray.go b/web/backend/systray.go index 902cc65e0..2ae4434bb 100644 --- a/web/backend/systray.go +++ b/web/backend/systray.go @@ -1,4 +1,4 @@ -//go:build !darwin || cgo +//go:build (!darwin && !freebsd) || cgo package main diff --git a/web/backend/tray_stub_nocgo.go b/web/backend/tray_stub_nocgo.go new file mode 100644 index 000000000..13ecfd2cb --- /dev/null +++ b/web/backend/tray_stub_nocgo.go @@ -0,0 +1,33 @@ +//go:build (darwin || freebsd) && !cgo + +package main + +import ( + "context" + "os" + "os/signal" + "runtime" + "syscall" + "time" + + "github.com/sipeed/picoclaw/pkg/logger" +) + +func runTray() { + logger.Infof("System tray is unavailable in %s builds without cgo; running without tray", runtime.GOOS) + + if !*noBrowser { + go func() { + time.Sleep(browserDelay) + if err := openBrowser(); err != nil { + logger.Errorf("Warning: Failed to auto-open browser: %v", err) + } + }() + } + + ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM) + defer stop() + + <-ctx.Done() + shutdownApp() +}