Pagina 1 di 1

XDG Base Directory Specification, come funziona?

Inviato: domenica 9 dicembre 2012, 18:53
da Bradipaccio
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/)?

Re: XDG Base Directory Specification, come funziona?

Inviato: domenica 9 dicembre 2012, 20:08
da Bradipaccio
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

Re: XDG Base Directory Specification, come funziona?

Inviato: mercoledì 16 gennaio 2013, 6:57
da crap0101
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/

Re: XDG Base Directory Specification, come funziona?

Inviato: lunedì 21 gennaio 2013, 19:03
da Bradipaccio
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

Re: XDG Base Directory Specification, come funziona?

Inviato: martedì 22 gennaio 2013, 1:16
da crap0101
Bradipaccio » [url=http://forum.ubuntu-it.org/viewtopic.php?p=4300215#p4300215]21/01/2013, 19:03[/url] 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

Re: XDG Base Directory Specification, come funziona?

Inviato: martedì 22 gennaio 2013, 13:38
da Bradipaccio
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

Re: XDG Base Directory Specification, come funziona?

Inviato: martedì 22 gennaio 2013, 14:46
da crap0101
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

Re: XDG Base Directory Specification, come funziona?

Inviato: martedì 22 gennaio 2013, 16:01
da Bradipaccio

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

Re: XDG Base Directory Specification, come funziona?

Inviato: martedì 22 gennaio 2013, 18:19
da crap0101
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).