//go:build linux package main // notify_linux.go — M8-4 R5-D1:Linux OS 原生通知(notify-send) // // notify-send 是 libnotify-bin 提供的標準工具,多數桌面環境預裝。 // 若使用者的發行版未裝,呼叫會失敗,此處只 log warning 不 fail。 // // TDD ground truth: // - .autoflow/04-architecture/v2/server-lifecycle.md §10.3 import ( "fmt" "os" "os/exec" ) // sendCrashNotification 發一則 OS 原生通知。非阻塞、fire-and-forget。 func sendCrashNotification(title, body string) { // -u critical:提高優先級、不會被自動消失 // -i dialog-error:使用系統錯誤圖示 cmd := exec.Command("notify-send", "-u", "critical", "-i", "dialog-error", title, body) if err := cmd.Run(); err != nil { fmt.Fprintf(os.Stderr, "[notify] notify-send failed: %v\n", err) // 不再做 fallback — Linux 桌面環境差異大, // 若 notify-send 不存在就認命;控制台 banner 仍會顯示 } }