about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ui/notifier.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/ui/notifier.c b/src/ui/notifier.c
index ebc61e0d..16fd814f 100644
--- a/src/ui/notifier.c
+++ b/src/ui/notifier.c
@@ -23,6 +23,7 @@
 
 #include <stdio.h>
 #include <string.h>
+#include <stdlib.h>
 
 #include <glib.h>
 #ifdef HAVE_LIBNOTIFY
@@ -205,6 +206,31 @@ _notify(const char * const message, int timeout,
 
     Shell_NotifyIcon(NIM_MODIFY, &nid);
 #endif
+#ifdef HAVE_OSXNOTIFY
+    GString *notify_command = g_string_new("terminal-notifier -title 'Profanity' -message '");
+    g_string_append(notify_command, message);
+    g_string_append(notify_command, "'");
+
+    char *term_name = getenv("TERM_PROGRAM");
+    char *app_id = NULL;
+    if (g_strcmp0(term_name, "Apple_Terminal") == 0) {
+        app_id = "com.apple.Terminal";
+    } else if (g_strcmp0(term_name, "iTerm.app") == 0) {
+        app_id = "com.googlecode.iterm2";
+    }
+
+    if (app_id != NULL) {
+        g_string_append(notify_command, " -sender ");
+        g_string_append(notify_command, app_id);
+    }
+
+    int res = system(notify_command->str);
+    if (res == -1) {
+        log_error("Could not send desktop notificaion.");
+    }
+
+    g_string_free(notify_command, TRUE);
+#endif
 }
 
 void