| 1 | //go:build linux |
| 2 | |
| 3 | package notify |
| 4 | |
| 5 | import ( |
| 6 | "os/exec" |
| 7 | |
| 8 | "reasonix/internal/secrets" |
| 9 | ) |
| 10 | |
| 11 | // PlatformSender delivers notifications through the host OS. |
| 12 | type PlatformSender struct{} |
| 13 | |
| 14 | // NewPlatformSender returns the best-effort sender for the current platform. |
| 15 | func NewPlatformSender() PlatformSender { return PlatformSender{} } |
| 16 | |
| 17 | func (PlatformSender) Send(m Message) error { |
| 18 | cmd := exec.Command("notify-send", m.Title, m.Body) |
| 19 | cmd.Env = secrets.ProcessEnv() |
| 20 | if err := cmd.Start(); err != nil { |
| 21 | return err |
| 22 | } |
| 23 | go func() { _ = cmd.Wait() }() |
| 24 | return nil |
| 25 | } |
| 26 |