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 )
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; }
CPP = gcc OPTS = `pkg-config --cflags --libs gtk+-2.0 glib-2.0 libnotify` all: $(CPP) main.c -o notifica $(OPTS) clean: rm notifica
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
#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; }
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/
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.
Il nostro wiki installa solamente cookie tecnici necessari al funzionamento della piattaforma "Dokuwiki". Niente analitics, statistiche, tracciamenti o altro.