21 giugno 2007

Gnacchisnà

Continua la saga di post su xdg-user-dirs. Se la Disney Italia ha chiamato saga wizardsofmikeys non vedo perché non possa farlo io con i post.

Io però ho un buon motivo per continuare: ora anche il buon GNOME Panel supporta xdg-user-dirs.

Così come un buon libro, anche xdg-user-dirs ha diversi punti di vista, diversi piani di lettura. Ovviamente è un software, quindi i piani sono solo 3: sviluppatori, amministratori, utenti.

La parte sviluppatori spero sia stata abbastanza chiara nella parte precedente. Se usate le glib in via di sviluppo, le future 2.14.x, una funzione vi basta e vi avanza, se no dovete fare copia e incolla del codice da xdg-user-dirs stesso (che poi è quello che c'è in Fedora 7).

Per amministratori

Se siete amministratori, o vendor, avete due file con cui modificare il comportamento: /etc/xdg/user-dirs.conf e /etc/xdg/user-dirs.default.

Il primo definisce semplicemente se usare xdg-user-dirs e quale encoding usare per il nome delle directory (come predefiniti, rispettivamente YES e UTF-8).

Il secondo definisce quali directory e con quale struttura creare le cartelle predefinite per tutti gli utenti. Per struttura intendo che è possibile sia mettere tutte le varie cartelle in $HOME, sia fare qualcosa in stile Windows tipo:
MUSIC=Documents/Music
PICTURES=Documents/Pictures
VIDEOS=Documents/Videos
[...]
La sintassi del file è abbastanza semplice; le chiavi riconosciute sono, al momento APPLICATIONS, DESKTOP, DOCUMENTS, DOWNLOAD, MOVIES, MUSIC, PHOTOS, PICTURES, PROJECTS, PUBLIC, SHARE, TEMPLATES, VIDEOS; i valori delle chiavi sono i sono percorsi delle cartelle relativi alla directory $HOME e per garantine la localizzaione devono essere gli stessi delle chiavi, sia con prima lettera maiuscola (p.e. "Music") che minuscola (p.e. "music").

Questo vuol dire, ad esempio, che volendo posso definire un qualcosa tipo:
MUSIC=Data/Music
per il quale solo il nome della directory Music potrà essere localizzato, non quello della directory Data, in quanto quest'ultima risulta "sconosciuta". Ovviamente non ho ancora provato se la cosa funziona veramente e come, specie se aggiorno la configurazione di sistema dopo aver creato le directory nella home dell'utente.

Per l'utente

Era ovvio e prevedibile che un sistema del genere fosse progettato per essere configurato anche dall'utente. anche qui abbiamo due file per la configurazione entrambi posti in $HOME/.config (ossia nella directory speciale $XDG_CONFIG_HOME).

Il primo dei due file user-dirs.locale memorizza semplicemente il codice dell'attuale localizzazione delle directory.

Il secondo file, user-dirs.dirs fotografa lo stato attuale. La sintassi è lievemente differente:
XDG_DESKTOP_DIR="$HOME/Scrivania"
XDG_DOWNLOAD_DIR="$HOME/Scaricati"
XDG_TEMPLATES_DIR="$HOME/Modelli"
...
A sinistra del segno di uguaglianza la variabile ha un prefisso e un suffisso, a desta del segno vi è il nome, completo di percorso, di una directory (che deve esistere) a cui la variabile punta.

Le modifiche che si possono apportare a questo file sono le stesse di prima: è possibile quindi aggiungere, nel limite dei valori riconosciuti, dei percorsi oppure modificarli, con la differenza che la directory che si sta aggiungendo o modificando deve già esistere. Al momento non esistono strumenti grafici per la modifica della configurazione.

Le modifiche applicate dall'utente alla struttura sono conservate quando, al login, vengono aggiornati i nomi nel caso di cambio di lingua scelta.

Per i criticoni

Appunto mentale: scrivere qui qualcosa di sarcastico al punto giusto per controbattere tutte le stupide (ma senza dire che sono stupide, definirle magari superficiali) critiche tipo "tanto difficile crearsi 3 o 4 cartelle?" oppure "un’obbligazione che non mi è mai piaciuta, e che non uso" oppure ancora "se faccio una foto alla mia carta d’identità dove la metto? $immagini o $documenti?".

And the winner is...

ORGA!!!!

-adesso puoi saltellare sulle sedie del luogo in cui ti trovi, ORGA, io continuo a sventolare un foglietto di carta come la giunonica Sofia Loren-

La soluzione al concorso del post precedente era CBGB o CBGB's o CB's o CBGB & OMFUG (che significa Country Blue Grass Blue and Other Music For Uplifting Gourmandizers), ossia il mitico, storico locale newyorkese che ha visto le prime esibizioni dei Television, Blondie, Patti Smith e RAMONES!

Come promesso, ORGA vedrà un post a lui/lei dedicato con argomento a sua scelta.

9 giugno 2007

Gabba Gabba Hey!

...e poi dicono che Google Street View è il male... fintanto che mi fa vedere panorami come questo, io non mi lamento.

Update visto il solo, stupito commento, faccio notare che non è detto che si vedano cose particolarissime (tipo il tanga di una tipa che sale le scale); magari potrei aver semplicemente linkato un luogo ad alto impatto emotivo ed emozionale. Provate a partire dal titolo del post: a chi indovina, dedicherò un post con argomento a scelta.

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

6 giugno 2007

Emmanuele, ovvero dio è con noi

Mi accorgo solo ora di un'alta feature implementata: in modo corretto, in modo pulito, in modo cross-platform, in modo che funzioni come uno ci si aspetta.

Rimane un solo dubbio: come si spiega che Emmanuele Bassi abbia gli stessi miei "punti-bugzilla"? Non dovrebbe averne almeno il doppio?? Non dovremmo tessere le sue lodi e scrivere almeno quattro libri sulla sua vita? Non dovremmo scegliere 12 utenti di Windows, convertirli e renderli suoi apostoli?

Ora da lui mi aspetto solo due cose: la trasformazione dell'acqua in vino (se non fossi diventato culturalmente astemio...) e diventare maintainer di Tracker :-)

Corposa aggiunta per i lettori pigri a cui non va di leggere il bug report: nella prossima versione delle glib sarà disponibile la funzione g_get_user_special_dir() che consente di ottenere il percorso di una directory utente "speciale", come potrebbe essere ~/Desktop o ~/Musica o ~/Video, ovviamente usando l'implementazione specifica a seconda della piattaforma in uso, ossia Win32, Cocoa o xdg-user-dirs... non sapete cosa è xdg-user-dirs? Attendete il prossimo post, no?

Solo due domande

O due personalissime risposte, o due personalissimi dubbi, dipende dai punti di vista.

Domanda numero 1 (che poi è una risposta)
Pare ci sia un noto comico che sta girando la penisola domandando che è il momento giusto per dire da chi vogliamo essere governati. Personalmente rispondo Mary Poppins. Però mi accontento anche di qualcosa tipo Laura Antonelli in Malizia.
Domanda numero 2 (che poi è un dubbio)
Rivolto a chi il militare l'ha fatto. Quando un generale da un ordine credo si aspetti che chi l'ha ricevuto lo esegua. Come funziona quando è un generale a ricevere un ordine? Si lamenta? Che so: «Generale, lei da domani è trasferito» «Uffa, stavo così bene qui, non mi va, non è giusto, non si fa, ecco. E allora io dico a tutti che sei cattivo»

1 giugno 2007

Una doverosa precisazione

Il post precedente sul lasciare un cortese messaggio a chi occupa impunemente una postazione in un CED, era ovviamente ironico, spero che almeno questo si sia capito: di certo lasciare un messaggio non è una soluzione al problema postazioni occupate. Visto però che sono finito su OSSblog.it (:-O) e che magari ho dato adito a fraintendimenti, ecco qui un piccolo approfondimento.

Come anticipato la nuova funzione "Lascia un messaggio" non è una soluzione al problema del sovraffollamento dei CED. Il buon gnome-screensaver infatti implementa una funzione dedicata per terminare la sessione in corso quando lo schermo è bloccato senza passare per il tasto reset o per Ctrl-Alt-Backspace (che in un luogo come un CED dovrebbe essere bloccato per ovvie ragioni di sicurezza).

La funzione per "liberare" una postazione abusivamente bloccata è facilmente attivabile per mezzo di tre semplici e comode chiavi GConf (per me tutte le chiavi GConf sono comode):
  • /apps/gnome-screensaver/logout_enabled - chiave booleana per attivare o meno la possibilità di terminare una sessione dal dialogo di sblocco del salvaschermo
  • /apps/gnome-screensaver/logout_delay - chiave numerica per definire il numero di minuti dopo il quale compare il pulsante "Termina sessione" nel dialogo di sblocco
  • /apps/gnome-screensaver/logout_command - comando da far eseguire quando si preme il pulsante al punto precedente
Impostare queste chiavi per-utente non ha senso. Tali chiavi debbono essere impostate dall'amministratore di sistema e devono essere impositive, altrimenti che cavolo di politica predefinita sarebbe se gli smanettoni possono scavalcarla? Per chi non sapesse cosa è una chiave impositiva, c'è la comoda guida per l'amministrazione di sistema di GNOME, bellamente tradotta da me negli scorsi anni.

La documentazione fornita con le chiavi stesse è sufficiente a capire come funzionano, l'unica mancanza è il comando per terminare la sessione. Tale comando, con un po' di arzigogolo mentale è gnome-session-save --kill --silent (già, terminare una sessione invocando il comando per salvarla è un po' strano...) ed è anche il valore che deve assumere la chiave logout_command.

Una volta impostato, il funzionamento è semplice: passati gli N minuti definiti in logout_delay, nel dialogo di sblocco appare un nuovo pulsante, Termina sessione. Facendo clic su di esso viene eseguito il comando. Se la sessione è GNOME e il comando è quello indicato sopra, lo schermo si "sblocca", la sessione finisce senza riapparire e senza chiedere conferma[1] e si riparte dalla schermata di login.

Analogamente, è possibile scegliere di non mostrare il pulsante Cambia utente nel dialogo di sblocco, impostando a FALSO la chiave booleana /apps/gnome-screensaver/user_switch_enabled. In realtà tale opzione sembra non avere effetto, ma tranquilli, ho prontamente segnalato il bug.

Un buon amministratore di CED quindi potrebbe disattivare l'user switch per impedire che un computer giustamente bloccato venga usato da altri e al tempo stesso attivare la terminazione della sessione quando il computer è stato bloccato più a lungo del tempo consentito. Provate a comunicarlo al vostro amministratore - ma attenti che non sia un bofh se non volete ritorsioni - magari è la volta buona che vi ringrazierà sentitamente e vi garantirà un accesso a vita senza rinnovo di semestre in semestre ;-)

[1] non ho provato a vedere cosa succede se ci sono documenti non salvati, specie con applicazioni non GNOME.