====== Introduzione alle notifiche con libnotify ======
Autore: **//Fabio Di Matteo//** \\ Ultima revisione: **//12/11/2012//** \\ \\
«Libnotify è una libreria che invia notifiche per il desktop a un demone di notifica come definito nella specifica "Desktop Notifications". Queste notifiche possono essere usate per informare l'utente riguardo un evento o visualizzare delle informazioni senza intralciare l'utente durante l'uso del computer.» \\ \\
[[http://library.gnome.org/devel/libnotify/0.7/|Libnotify]] e' dunque una pratica libreria C che permette di mostrare semplici messaggi di notifica all'utente proprio come fa Gnome per segnalare la presenza del cavo di rete o di una connessione wireless o il cambio da una canzone all'altra su Rhytmbox. \\
Di seguito un sorgente abbondantemente commentato e il suo relativo makefile i quali permettono di realizzare questo genere di popup per desktop: \\
{{programmazione:libnotify:libnotify0.png|}}
//(Se interessa un programma che faccia i popup negli script del tipo// ''notificator Titolo 'corpo del testo' icona.png'' andare [[http://www.freemedialab.org/wiki/doku.php?id=programmazione:libnotify:introduzione_alle_notifiche#un_esempio_praticodotiamo_i_nostri_script_delle_notifiche|qui]] )
===== Sorgente =====
Per la documentazione ufficiale alle altre funzioni della libreria visitare [[http://library.gnome.org/devel/libnotify/]]
#include
#include
#include
int main(int argc, char * argv[] )
{
NotifyNotification *notifica;
notify_init("Hello world");
//Messaggio con titolo testo e icona
notifica = notify_notification_new ("Titolo",
"Ciao questo è il corpo del messaggio",
"/home/fabio/Documenti/icone/gmail.png");
//Mostra la notifica se possibile altrimenti termina con errore
if (!notify_notification_show (notifica, NULL))
{
fprintf(stderr, "Problemi nel mostrare la notifica\n");
return 1;
}
g_object_unref(G_OBJECT(notifica));
return 0;
}
===== Makefile =====
CPP = gcc
OPTS = `pkg-config --cflags --libs gtk+-2.0 glib-2.0 libnotify`
all:
$(CPP) main.c -o notifica $(OPTS)
clean:
rm notifica
=====Un esempio pratico: dotiamo i nostri script delle notifiche =====
Puo' essere utile dotare i nostri script delle notifiche e appunto per assolvere questo compito utilizzero un nostro comando **notificator** ! \\
L'uso in se' è banale :
./notificator
**Download** \\
{{programmazione:libnotify:notificator.tar.gz|}}
==== Il codice ====
#include
#include
#include
int usage()
{
printf("\n USAGE: notificator \n\n");
}
int main(int argc, char * argv[] )
{
if ( g_strcmp0(argv[1], "--help") == 0) { usage(); return 0;}
NotifyNotification *notifica;
notify_init("Notificator");
notifica = notify_notification_new (argv[1], argv[2], argv[3]);
if (!notify_notification_show (notifica, NULL))
{
fprintf(stderr, "Error on notify\n");
return 1;
}
g_object_unref(G_OBJECT(notifica));
return 0;
}
==== make file ====
CPP = gcc
OPTS = `pkg-config --cflags --libs gtk+-2.0 glib-2.0 libnotify`
all:
$(CPP) main.c -o notificator $(OPTS)
clean:
rm notificator
install:
cp notificator /usr/local/bin/
===== Usare nofity-send =====
Nelle distribuzioni Gnome e Mate desktop esiste un eseguibile che fa piu' o meno le stesse cose di ''notificator'' . Ecco un esempio di utilizzo:
notify-send Messaggio --icon=/mnt/dati/Documenti/downloads/faccia.png " Il cavo hdmi è stato connesso con successo"
{{programmazione:libnotify:notify-send.png|}}
Usage:
notify-send [OPTION...] [BODY] - create a notification
Help Options:
-?, --help Show help options
Application Options:
-u, --urgency=LEVEL Specifies the urgency level (low, normal, critical).
-t, --expire-time=TIME Specifies the timeout in milliseconds at which to expire the notification.
-a, --app-name=APP_NAME Specifies the app name for the icon
-i, --icon=ICON[,ICON...] Specifies an icon filename or stock icon to display.
-c, --category=TYPE[,TYPE...] Specifies the notification category.
-h, --hint=TYPE:NAME:VALUE Specifies basic extra data to pass. Valid types are int, double, string and byte.
-v, --version Version of the package.