diff options
Diffstat (limited to 'notification')
-rw-r--r-- | notification/notif.go | 8 | ||||
-rw-r--r-- | notification/notify_darwin.go | 25 | ||||
-rw-r--r-- | notification/notify_unix.go | 21 |
3 files changed, 54 insertions, 0 deletions
diff --git a/notification/notif.go b/notification/notif.go new file mode 100644 index 0000000..b436c19 --- /dev/null +++ b/notification/notif.go @@ -0,0 +1,8 @@ +package notification + +// Notif struct holds information about the notification. Other +// parameters like urgency & timeout could be added when required. +type Notif struct { + Title string + Message string +} diff --git a/notification/notify_darwin.go b/notification/notify_darwin.go new file mode 100644 index 0000000..bddaf9e --- /dev/null +++ b/notification/notify_darwin.go @@ -0,0 +1,25 @@ +// +build darwin + +package notification + +import ( + "fmt" + "os/exec" + "strconv" +) + +// Notify sends a desktop notification to the user using osascript. It +// handles information in the form of Notif struct. It returns an +// error (if exists). +func (n Notif) Notify() error { + // This script cuts out parts of notification, this bug was + // confirmed on macOS Catalina 10.15.3, fix not yet known. + err := exec.Command("osascript", "-e", + `display notification `+strconv.Quote(n.Message)+` with title `+strconv.Quote(n.Title)).Run() + if err != nil { + err = fmt.Errorf("%s\n%s", + "notify_darwin.go: failed to sent notification with osascript", + err.Error()) + } + return err +} diff --git a/notification/notify_unix.go b/notification/notify_unix.go new file mode 100644 index 0000000..a6fc3ac --- /dev/null +++ b/notification/notify_unix.go @@ -0,0 +1,21 @@ +// +build linux netbsd openbsd freebsd dragonfly + +package notification + +import ( + "fmt" + "os/exec" +) + +// Notify sends a desktop notification to the user using libnotify. It +// handles information in the form of Notif struct. It returns an +// error (if exists). +func (n Notif) Notify() error { + err := exec.Command("notify-send", n.Title, n.Message).Run() + if err != nil { + err = fmt.Errorf("%s\n%s", + "notify_unix.go: failed to sent notification with notify-send", + err.Error()) + } + return err +} |