XDG Base Directory Specification, come funziona?

Coordinamento delle attività e informazioni sui progetti del gruppo: creazione, modifica e gestione dei pacchetti di Ubuntu e relative problematiche.

Moderatore: Gruppo Sviluppo

XDG Base Directory Specification, come funziona?

Messaggioda Bradipaccio » domenica 9 dicembre 2012, 19:53

Salve a tutti! Non sicuro sia questa la sezione giusta, spero di non aver sbagliato :)

Articolo meglio la mia domanda:
I sistemi aderenti alle specifiche freedesktop.org usano delle variabili predefinite su dove allocare determinate directory all'interno di /home/utente/, sia di archiviazione dei dati personali (Desktop, Documents, ecc..) sia di configurazione e altro relative alle applicazioni in uso (.config, .local, .cache, ecc..). In ubuntu questo dipende dalle apposite librerie preinstallate (xdg-utils e xdg-user-dirs), noto però che la libreria libxdg-basedir1 non è installata di default...

Stando alla descrizione del pacchetto:
The "XDG Base Directory Specification" defines where should user files be looked for by defining one or more base directories relative in with they should be located.

This library implements functions to list the directories according to the specification and provides a few higher-level functions.


...cioè, se ho ben capito, i programmi che invocano le variabili
$XDG_DATA_HOME
$XDG_CONFIG_HOME
$XDG_DATA_DIRS
$XDG_CONFIG_DIRS
$XDG_CACHE_HOME
$XDG_RUNTIME_DIR
...si appoggiano a questa libreria.

Arrivando al sodo, essendo appunto non preinstallata mi domandavo se tutti quei programmi che seguono le specifiche di freedesktop.org non trovandala andassero in "fallback mode" creandosi una propria directory personale in $HOME.

Esempio:
Firefox mi sembra segua le specifiche freedesktop.org, però in ubuntu trovo i suoi file di configurazione in $HOME/.mozilla e non in una ipotetica $HOME/.config/mozilla. Se vado ad installare libxdg-basedir1 è possibile che firefox vada a creare la sua cartella di configurazione in $XDG_CONFIG_HOME (/home/utente/.config/)?
Avatar utente
Bradipaccio
Prode Principiante
 
Messaggi: 17
Iscrizione: novembre 2007

Re: XDG Base Directory Specification, come funziona?

Messaggioda Bradipaccio » domenica 9 dicembre 2012, 21:08

Ho provato a fare un test installando la libreria ma la situazione è rimasta inalterara. la cosa strana però è che se provo a dare un...
Codice: Seleziona tutto
echo $XDG_CONFIG_HOME

...non mi stampa un cavolo di niente
questo con qualsiasi variabile "XDG" (anche quelle in .config/user-dirs.dir)
Senza contare che non riesco a capire dove Debian o Ubuntu mantengano i file di configurazione delle variabili basedir
Avatar utente
Bradipaccio
Prode Principiante
 
Messaggi: 17
Iscrizione: novembre 2007

Re: XDG Base Directory Specification, come funziona?

Messaggioda crap0101 » mercoledì 16 gennaio 2013, 7:57

Mah, a me alcune di quelle variabili sono settate.
Riguardo libxdg-basedir1 quello è un pacchetto che contiene un'implementazione delle specifiche, ma serve se devi scrivere qualche programma che ne deve tener conto, per questo non è installata (e non serve per modificare il comportamento).
Riguardo firefox e altri programmi sì, _dovrebbero_ tenerne conto, c'è da considerare che potrebbe non dipendere solo dal programma, ma in questo caso anche da chi lo pacchettizza, che potrebbe aver scelto una soluzione diversa (non so perchè).
btw, i file xdg-relativi dovrebbero essere in /etc/xdg/
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
 
Messaggi: 8125
Iscrizione: ottobre 2007
Località: TO
Desktop: Lubuntu
Distribuzione: Ubuntu 14.04.3 LTS
Sesso: Maschile

Re: XDG Base Directory Specification, come funziona?

Messaggioda Bradipaccio » lunedì 21 gennaio 2013, 20:03

crap0101 ha scritto:Mah, a me alcune di quelle variabili sono settate
Quali? Sul mio sistema solo le user-dirs (almeno credo)

crap0101 ha scritto:Riguardo libxdg-basedir1 quello è un pacchetto che contiene un'implementazione delle specifiche, ma serve se devi scrivere qualche programma che ne deve tener conto, per questo non è installata (e non serve per modificare il comportamento)
Capito :)

crap0101 ha scritto:Riguardo firefox e altri programmi sì, _dovrebbero_ tenerne conto, c'è da considerare che potrebbe non dipendere solo dal programma, ma in questo caso anche da chi lo pacchettizza, che potrebbe aver scelto una soluzione diversa (non so perchè)
Penso più la prima visto che anche prendendo firefox vanilla direttamente dal sito l'eseguibile estratto va a crearsi la dir ".mozilla" in home

Personalmente preferirei che si usasse di più questo approccio granulare... ma poi mi trovo davanti soluzioni come dconf (bocca mia taci!) e capisco che è solo una pia illusione

crap0101 ha scritto:i file xdg-relativi dovrebbero essere in /etc/xdg/
Nope
Avatar utente
Bradipaccio
Prode Principiante
 
Messaggi: 17
Iscrizione: novembre 2007

Re: XDG Base Directory Specification, come funziona?

Messaggioda crap0101 » martedì 22 gennaio 2013, 2:16

Bradipaccio » 21/01/2013, 19:03 ha scritto:
crap0101 ha scritto:Mah, a me alcune di quelle variabili sono settate
Quali? Sul mio sistema solo le user-dirs (almeno credo)

queste
Codice: Seleziona tutto
crap0101@orange:/tmp$ echo $XDG_CONFIG_HOME
/home/crap0101/.config
crap0101@orange:/tmp$ echo $XDG_CONFIG_DIRS
/etc/xdg/trisquel-mini/:/etc/xdg/xdg-/usr/bin/starttrisquel-mini:/etc/xdg:/etc/xdg
crap0101@orange:/tmp$ echo $XDG_CURRENT_DESKTOP
LXDE
crap0101@orange:/tmp$ echo $XDG_DATA_DIRS
/etc/xdg/trisquel-mini:/usr/share//usr/bin/starttrisquel-mini:/usr/local/share/:/usr/share/:/usr/share
crap0101@orange:/tmp$ echo $XDG_MENU_PREFIX
lxde-
crap0101@orange:/tmp$ echo $XDG_SESSION_COOKIE
#una serie di numeri e lettere



crap0101 ha scritto:i file xdg-relativi dovrebbero essere in /etc/xdg/
Nope

nel senso che non c'è niente? io ho
crap0101@orange:/tmp$ ls /etc/xdg/
autostart libfm menus openbox Trolltech.conf user-dirs.defaults
FreeMat lxsession midori trisquel-mini user-dirs.conf xfce4
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
 
Messaggi: 8125
Iscrizione: ottobre 2007
Località: TO
Desktop: Lubuntu
Distribuzione: Ubuntu 14.04.3 LTS
Sesso: Maschile

Re: XDG Base Directory Specification, come funziona?

Messaggioda Bradipaccio » martedì 22 gennaio 2013, 14:38

crap0101 ha scritto:queste
Codice: Seleziona tutto
crap0101@orange:/tmp$ echo $XDG_CONFIG_HOME
    /home/crap0101/.config
    crap0101@orange:/tmp$ echo $XDG_CONFIG_DIRS
    /etc/xdg/trisquel-mini/:/etc/xdg/xdg-/usr/bin/starttrisquel-mini:/etc/xdg:/etc/xdg
    crap0101@orange:/tmp$ echo $XDG_CURRENT_DESKTOP
    LXDE
    crap0101@orange:/tmp$ echo $XDG_DATA_DIRS
    /etc/xdg/trisquel-mini:/usr/share//usr/bin/starttrisquel-mini:/usr/local/share/:/usr/share/:/usr/share
    crap0101@orange:/tmp$ echo $XDG_MENU_PREFIX
    lxde-
    crap0101@orange:/tmp$ echo $XDG_SESSION_COOKIE
    #una serie di numeri e lettere
Mi pare di capire che usi Trisquel, su ubuntu 12.04 ho impostate solo le variabili xdg di sistema (es: "XDG_DATA_DIRS") e le user-dirs ...in ogni caso mi sembra strano visto che è una derivata, ma probabilmente dipenderà dalla mia release (non ho verificato sulla 12.10)

crap0101 ha scritto:nel senso che non c'è niente?
No, nel senso che non trovo file di configurazione contenenti le variabili da me elencate
Avatar utente
Bradipaccio
Prode Principiante
 
Messaggi: 17
Iscrizione: novembre 2007

Re: XDG Base Directory Specification, come funziona?

Messaggioda crap0101 » martedì 22 gennaio 2013, 15:46

prova a dare il comando
Codice: Seleziona tutto
grep -R XDG_ /etc/ 2> /dev/null

a me esce un pò di roba con script in cui (alcune di) queste variabili vengono utilizzate o esportate
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
 
Messaggi: 8125
Iscrizione: ottobre 2007
Località: TO
Desktop: Lubuntu
Distribuzione: Ubuntu 14.04.3 LTS
Sesso: Maschile

Re: XDG Base Directory Specification, come funziona?

Messaggioda Bradipaccio » martedì 22 gennaio 2013, 17:01

Codice: Seleziona tutto
:DEFAULT_XDG_CONFIG_DIRS='/etc/xdg'
/etc/X11/Xsession.d/60x11-common_xdg_path:DEFAULT_XDG_DATA_DIRS='/usr/local/share/:/usr/share/'
/etc/X11/Xsession.d/60x11-common_xdg_path:  if [ -z "$XDG_CONFIG_DIRS" ]; then
/etc/X11/Xsession.d/60x11-common_xdg_path:    XDG_CONFIG_DIRS="$DEFAULT_XDG_CONFIG_DIRS"
/etc/X11/Xsession.d/60x11-common_xdg_path:  XDG_CONFIG_DIRS="$DEFAULT_XDG_CONFIG_DIRS"/xdg-"$DESKTOP_SESSION":"$XDG_CONFIG_DIRS"
/etc/X11/Xsession.d/60x11-common_xdg_path:  export XDG_CONFIG_DIRS
/etc/X11/Xsession.d/60x11-common_xdg_path:     if [ -z "$XDG_DATA_DIRS" ]; then
/etc/X11/Xsession.d/60x11-common_xdg_path:       XDG_DATA_DIRS="$DEFAULT_XDG_DATA_DIRS"
/etc/X11/Xsession.d/60x11-common_xdg_path:     XDG_DATA_DIRS=/usr/share/"$DESKTOP_SESSION":"$XDG_DATA_DIRS"
/etc/X11/Xsession.d/60x11-common_xdg_path:     export XDG_DATA_DIRS
/etc/X11/Xsession.d/90consolekit: ( [ -z "$XDG_SESSION_COOKIE" ] || is_on_console ) ; then
/etc/X11/Xsession.d/55gnome-session_gnomerc:    if [ -z "$XDG_DATA_DIRS" ]; then
/etc/X11/Xsession.d/55gnome-session_gnomerc:      XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/
/etc/X11/Xsession.d/55gnome-session_gnomerc:      XDG_DATA_DIRS=/usr/share/gnome:"$XDG_DATA_DIRS"
/etc/X11/Xsession.d/55gnome-session_gnomerc:    export XDG_DATA_DIRS
Il file binario /etc/alternatives/x-session-manager corrisponde
/etc/xdg/user-dirs.conf:# the XDG_CONFIG_HOME and/or XDG_CONFIG_DIRS to override this


Qualcosa c'è in "/etc/X11/Xsession.d/60x11-common_xdg_path" ("XDG_CONFIG_DIRS" e "XDG_DATA_DIRS"), ma non trovo assegnato da nessuna parte "XDG_CONFIG_HOME"

Suppongo che i programmi che generino i files utente allocandoli nel giusto modo (in .config/ .local/ .cache/ e cosi via) come chromium abbiano definiti questi percorsi assoluti direttamente nel codice
Avatar utente
Bradipaccio
Prode Principiante
 
Messaggi: 17
Iscrizione: novembre 2007

Re: XDG Base Directory Specification, come funziona?

Messaggioda crap0101 » martedì 22 gennaio 2013, 19:19

sul mio vedo che in /etc/alternatives/x-session-manager fa un controllo dell'esistenza di $XDG_CONFIG_HOME, se non c'è la crea; il posto in cui dovrebbe/potrebbe trovarsi è /etc/xdg/user-dirs.conf (io comunque lì non la ho, per cui nel mio caso viene impostata dall'altro file) oppure per utente in ~/.config/user-dirs.conf (se presente, altrimenti lo si deve creare).
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
 
Messaggi: 8125
Iscrizione: ottobre 2007
Località: TO
Desktop: Lubuntu
Distribuzione: Ubuntu 14.04.3 LTS
Sesso: Maschile


Torna a Gruppo Sviluppo

Chi c’è in linea

Visualizzano questa sezione: 0 utenti registrati e 1 ospite