From 3ee3715ae7777dd6c1804974e2e293406fd1fe54 Mon Sep 17 00:00:00 2001 From: Andinus Date: Wed, 25 Mar 2020 00:13:51 +0530 Subject: Add apod support & fix errors --- notification/notif.go | 8 ++++++++ notification/notify_darwin.go | 25 +++++++++++++++++++++++++ notification/notify_unix.go | 21 +++++++++++++++++++++ 3 files changed, 54 insertions(+) create mode 100644 notification/notif.go create mode 100644 notification/notify_darwin.go create mode 100644 notification/notify_unix.go (limited to 'notification') 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 +} -- cgit 1.4.1-2-gfad0