Barra laterale

programmazione:libnotify:introduzione_alle_notifiche

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.»

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:

(Se interessa un programma che faccia i popup negli script del tipo notificator Titolo 'corpo del testo' icona.png andare qui )

Sorgente

Per la documentazione ufficiale alle altre funzioni della libreria visitare http://library.gnome.org/devel/libnotify/

#include <libnotify/notify.h>
#include <stdio.h>
#include <unistd.h>
 
 
 
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 <Titolo> <corpo del testo>  <percorso assoluto dell'immagine> 

Download
notificator.tar.gz

Il codice

#include <libnotify/notify.h>
#include <stdio.h>
#include <unistd.h>
 
 
int usage()
{
	printf("\n USAGE: notificator <title> <text> <absolute path to icon>\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" 

Usage:
  notify-send [OPTION...] <SUMMARY> [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.

programmazione/libnotify/introduzione_alle_notifiche.txt · Ultima modifica: 18/04/2018 - 15:49 (modifica esterna)