7 giugno 2007

Voi forse preferite il meglio dei Tavares?

Tra le novità del prossimo GNOME c'è il supporto a xdg-user-dirs. Visto che detta così non accontento nessuno, mi toccherà spiegare ben benino di cosa si tratta; è uno sporco lavoro, ma qualcuno dovrà pur farlo.

Ma di che stai parlando?

xdg-user-dirs è, secondo la descrizione ufficiale, "uno strumento per facilitare la gestione delle directory utente «note», come ad esempio la cartella della scrivania o quella della musica".

Citando Corrado "Lorenzo" Guzzanti: «ma facciamo un passo indietro, Leopardi!»[1], una delle attuali carenze degli ambienti grafici liberi rispetto alle contropartite proprietario (Emmeesse Uindoicspi oppure Eppol Maccosics) è la mancanza di alcune cartelle predefinite in cui il classico utente novizio e sprovveduto possa organizzare i propri documenti. Non che sia 'sta grande mancanza, non che sia difficile creare una cartella dal nome "Musica" in cui salvare i propri MP3, solo che poi devi istruire tutte le tue varie applicazioni ad usare quella cartella per salvare o recuperare i file musicali e ti devi sentire vittima di una sorta di "invidia del pene", che magari non te ne frega niente, ma quando Rhythmbox ti rippa un CD in home tu pensi al uindomediapleier del tuo vicino e ti scoccia un po', anche se sai che il suo computer è diventato parte di una botnet...

Dopo un paio di anni almeno di discussione su come implementare la cosa, il geniale Alexander "Capitano, o mio capitano" Larsson se n'è all'improvviso uscito con la disponibilità immediata del pacchetto xdg-user-dirs e di qualche patch per GNOME (per la verità già incluse nella futura da poco rilasciata Fedora 7).

Ma come funziona?

Nel modo più semplice possibile, xdg-user-dirs fornisce:
  1. dei file di configurazione per definire quali cartelle note usare e a quale directory attualmente corrispondono nel file system;
  2. dei comandi, da lanciare manualmente o in automatico al login, per verificare se i nomi delle directory attualmente usate sono localizzate nella lingua in uso.
Nota: la strada scelta dunque non è quella di lasciare sul file system i nomi in inglese e tradurre "al volo" durante la visualizzazione. Sul perché della scelta non so, non voglio o non posso dire.

Nella pratica, xdg-user-dirs definisce alcune variabili del tipo XDG_DESKTOP_DIR, XDG_DOCUMENTS_DIR, XDG_PICTURES_DIR e così via. Ad ognuna di queste variabili è associata una directory per mezzo del file $HOME/.config/user-dirs.dirs; se il file non esiste o se in esso non c'è una particolare associazione, allora si ripiega su $HOME.

Quando un'applicazione necessita di usare una di queste cartelle, interroga in file di configurazione per stabilire quale al momento è, per esempio, la cartella per la scrivania.

Semplice ed efficace. Cos'altro chiedere dalla vita? - se l'Amaro Lucano vi fa schifo come a me, opterei per qualche patatina... - Non sono variabili ambientali in senso stretto, poiché non mi pare siano esportate e debbono essere recuperate dal file user-dirs.dirs, ma nella pratica funzionano allo stesso modo.

Ma dove sta la figata?

A parte l'aver definito un meccanismo facile da usare e allo stesso tempo flessibile, la figata è duplice.

La prima figata, per tutti, è nel nuovo comando xdg-user-dirs-update che eseguito la prima volta legge un file di configurazione di sistema in cui sono stabilite, per tutti gli utenti, quali cartelle creare e dove piazzarle (per la gioia degli amministratori di sistema e i vendor), eseguito le volte successive, magari al login, controlla se il nome delle directory "note" corrisponde alla lingua/localizzazione attuale. È disponibile anche una versione "grafica" in GTK, perfettamente integrato nel sistema di programmi di avvio di gnome-session, che avvisa con un bel dialogo dell'incipiente cambio di nome e permette di effettuarlo oppure no.

Ecco qui il dialogo in tutto il suo splendore, anche se sarebbe da cambiare qualcosina per renderlo un po' più HIG-compliant (tranquilli ho già pronte le patch, basta solo aspettare che Alex "Capitano, o mio capitano" torni dalla forzata pausa causa nascita prima frugolletta):


La seconda figata, per GNOME/GTK+, è nella nuova funzione delle glib, annunciata nel post precedente, che libera gli sviluppatori dalla necessità di scrivere a mano codice per leggere i file di configurazione di cui prima (metodo su cui sono basate le patch di Fedora 7). Voglio che il mio ripper musicale non metta tutto in $HOME? Bene, mi basta scrivere:
gchar *music_dir = g_get_user_special_dir (G_USER_DIRECTORY_MUSIC)
e vengo automaticamente a conoscenza del percorso, ammesso che sia definito, senza perdermi nei dettagli dell'implementazione di xdg-user-dirs, di Win32 o di Cocoa. Già perché, essendo le GLIB/GTK+ multipiattaforma, checché[2] alcuni commentatori di Felipe dicano, mica pretenderete di aspettare che xdg-user-dirs venga portato su Uindoicspi o in Maccosics per usare questa funzione, vero? Che tra l'altro, hanno le loro proprie implementazioni della funzione.

Ma cosa c'è di pronto?

Al momento sul repository SVN o nei pacchetti instabili ci sono diversi programmi che stanno già usando i meccanismi di xdg-user-dirs (sebbene non il recentissimo wrapper in glib) per fornire accesso a particolari cartelle, nello specifico:
  1. Totem aggiunge al file chooser le directory "multimediali" quando si sceglie File->Apri
  2. SoundJuicer usa $MUSICA come destinazione predefinita del rip dei CD
  3. Epiphany usa $SCARICATI come destinazione predefinita dei download
  4. Evince usa $DOCUMENTI come cartella predefinita quando si sceglie File->Apri
  5. gnome-screensaver usa $IMMAGINI e/o $FOTOGRAFIE per il salvaschermo
  6. Nautilus usa la cartella $SCRIVANIA per la scrivania e $MODELLI per i template
  7. Rhytmbox usa la cartella $MUSICA come posizione predefinita per la libreria (è stato anche tolto l'assistente di primo avvio, che serviva solo a scegliere tale cartella)
  8. magari altri che al momento ingoro
L'unica assente dall'appello è al momento il Pannello, che dovrebbe essere aggiornato per utilizzare $SCRIVANIA.

Ma non lo sai che le domande non si cominciano con il "ma"?

Sì, ma tento di adeguarmi ai tempi e usare le nuove, rilassate e permissive regole della grammatica.

Ma il titolo del post che c'entra?

Ali shuffle? Niente? Disco Inferno? Qualcosa di Cerrone? Oppure Boney M, tipo Ma Baker, Daddy Cool, Rasputin. Disco Duck? No. Gimme Some? Qualcosa degli Oliver Onions, tipo Sandokan, Orzowei? Niente? Cuba dei Gibson Brothers, dai...
Certo che voi Bulgari siete delle sagome...

-----------

[1] per chi non avesse mai visto Avanzi o la puntata in questione, Lorenzo di letteratura sa solo Leopardi - oddio, sa solo che è gobbo - per cui tenta di ricondurre ogni autore a Leopardi. Alla domanda «Bene, allora parlami di Dante» la sua risposta fu, per l'appunto, «Ma facciamo un passo indietro, Leopardi!»
[2] quanto sono belli gli arcaismi linguistici...

3 commenti:

Anonimo ha detto...

hehe... pippero....

Anonimo ha detto...

Potrei darvi Kung Fu Fighting di Carl Douglas. Fly Robin Fly? :D

Sergio ha detto...

Veramente interessante!

Grazie per le info!

Cheers,
Sergio