Autore: Fabio Di Matteo
Ultima revisione: 27/05/2012
L'ambiente desktop Mate salva tutte le configurazioni in un database centralizzato chiamato Mateconf . E' una base dati con una struttura ad albero e puo' essere facilmente modificata con un' utility chiamata mateconf-editor . Ecco uno screenshot:
Vedremo in questa guida come interagire con mateconf scrivendo le nostre applicazioni.
Consiglio di tenere in considerazione (per completezza) anche anche il testo: “The official GNOME 2 developer's guide” di Matthias Warkus (considerando che le strutture e funzioni di mate hanno nomi diversi) e la documentazione dei sorgenti (scaricata da git) del desktop mate. Quando si scarica il sorgente di Mate Desktop ogni cartella contiene una sottocartella doc/
con esempi e documentazione.
Il codice che segue serve a leggere il valore (in questo caso booleano) della chiave /desktop/mate/interface/can_change_accels
.
main.c
#include <libmate/libmate.h> #include <libmateui/libmateui.h> #include <mateconf/mateconf-client.h> int main(int argc, char **argv) { MateProgram *program; MateConfClient *client; gchar *path; GError **error; /*Inizializziamo l'applicazione Mate, tutte le applicazioni Mate dovrebbero essere inizializzate*/ program = mate_program_init ("mytest", "0.0", LIBMATEUI_MODULE, argc, argv, NULL); /* Creo il MateConf client object */ client = mateconf_client_get_default(); mateconf_client_set_error_handling(client, MATECONF_CLIENT_HANDLE_UNRETURNED); /* Comunico a mateconf che voglio attenzionare questa directory */ path = mate_mateconf_get_app_settings_relative(program, "/desktop/mate/interface"); mateconf_client_add_dir(client, path, MATECONF_CLIENT_PRELOAD_RECURSIVE, NULL); /*Leggo il mio valore (in questo caso un booleano)*/ gboolean my_can_change_accels; my_can_change_accels = mateconf_client_get_bool(client, "/desktop/mate/interface/can_change_accels", NULL); //In base a cio' che ho letto stampo un messaggio piuttosto che un'altro if (my_can_change_accels == TRUE) printf("Si, puoi ridefinire le scorciatoie da tastiera \n"); if (my_can_change_accels == FALSE) printf("NON puoi ridefinire le scorciatoie da tastiera \n"); /* remove path */ mateconf_client_remove_dir(client, path, NULL); g_free(path); /* destroy client object */ g_object_unref(client); }
makefile
CPP = gcc OPTS = `pkg-config --cflags --libs libmate-2.0 mateconf-2.0 libmateui-2.0 libmatecomponent-2.0` all: $(CPP) main.c -o main $(OPTS) clean: rm main
Ecco i pochi passi necessari per installare le dipendenze.
0) Installare in forma binaria il mate-desktop (http://mate-desktop.org/install/)
1) Installare i pacchetti di sviluppo (-dev) in base ai progetti da realizzare
per esempio se voglio compilare gli esempi contenuti nella cartella "mate-conf" basta guardare le prime righe di codice: #include <libmate/libmate.h> #include <libmateui/libmateui.h> #include <mateconf/mateconf-client.h> per renderci conto che dobbiamo installare i pacchetti (-dev) di libmate-2.0, mateconf-2.0, libmateui-2.0, libmatecomponent-2.0
2) Come verificare quali pacchetti mate di sviluppo abbiamo installati?
Il metodo piu' semplice e immediato è lanciare pkg-config in questo modo: pkg-config --list-all |grep mate Potremmo così avere un'idea precisa dei pacchetti di cui siamo a disposizione.