diff --git a/Makefile b/Makefile index 9a8f0065..379a12e0 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,11 @@ CC = gcc WARNS = -Werror -Wall -Wextra -Wno-unused-parameter -Wno-unused-but-set-variable \ -Wno-unused-result -LIBS = -lncurses -L ~/lib -lstrophe -lxml2 -lexpat -lssl -lresolv `pkg-config --libs glib-2.0` +LIBS = -lncurses -L ~/lib -lstrophe -lxml2 -lexpat -lssl -lresolv \ + `pkg-config --libs glib-2.0` `pkg-config --libs libnotify` TESTLIB = -L ~/lib -l headunit `pkg-config --libs glib-2.0` CPPLIB = -lstdc++ -CFLAGS = -I ~/include -O3 $(WARNS) $(LIBS) `pkg-config --cflags glib-2.0` +CFLAGS = -I ~/include -O3 $(WARNS) $(LIBS) `pkg-config --cflags glib-2.0` `pkg-config --cflags libnotify` OBJS = log.o windows.o title_bar.o status_bar.o input_win.o jabber.o \ profanity.o util.o command.o history.o contact_list.o prof_history.o \ contact.o preferences.o prof_autocomplete.o common.o main.o diff --git a/windows.c b/windows.c index 11bd97e4..76cb2781 100644 --- a/windows.c +++ b/windows.c @@ -25,6 +25,7 @@ #include #include +#include #include "ui.h" #include "util.h" @@ -67,6 +68,7 @@ static void _cons_show_incoming_message(const char * const short_from, static void _win_handle_switch(const int * const ch); static void _win_handle_page(const int * const ch); static void _win_resize_all(void); +static void _win_notify(char * short_from); void gui_init(void) { @@ -186,12 +188,36 @@ void win_show_incomming_msg(const char * const from, const char * const message) _cons_show_incoming_message(short_from, win_index); if (prefs_get_flash()) flash(); + + _win_notify(short_from); } if (prefs_get_beep()) beep(); } +static void _win_notify(char * short_from) +{ + notify_init("Profanity"); + + // create a new notification + NotifyNotification *incoming; + incoming = notify_notification_new("Profanity", short_from, NULL); + + // set the timeout of the notification to 3 secs + notify_notification_set_timeout(incoming, 3000); + + // set the category so as to tell what kind it is + char category[30] = "Incoming message"; + notify_notification_set_category(incoming, category); + + // set the urgency level of the notification + notify_notification_set_urgency (incoming, NOTIFY_URGENCY_CRITICAL); + + GError *error = NULL; + notify_notification_show(incoming, &error); +} + void win_show_outgoing_msg(const char * const from, const char * const to, const char * const message) {