Le directory XDG sono il modo moderno e standardizzato con cui i desktop Linux organizzano file personali, configurazioni e dati cache. Capire come funzionano e come si configurano su Ubuntu e Fedora permette di avere una home più ordinata, spostare cartelle come Download o Documenti dove preferisci, e controllare dove i programmi salvano configurazioni e file temporanei.

In questa guida vediamo cosa sono le directory XDG, come vengono gestite sulle principali distribuzioni desktop, e come intervenire sia sulle cartelle utente (Documenti, Download, Musica, eccetera) sia sulle variabili XDG di base che regolano file di configurazione e dati applicativi.
Cosa leggere
Cosa sono le directory XDG
Quando si parla di directory XDG in realtà ci si riferisce a due livelli distinti ma collegati. Il primo livello è la XDG Base Directory Specification, cioè lo standard che definisce dove i programmi dovrebbero salvare configurazioni, dati e cache. Questo livello usa variabili d’ambiente come XDG_CONFIG_HOME, XDG_DATA_HOME e XDG_CACHE_HOME, con percorsi predefiniti nella home dell’utente.
Il secondo livello riguarda le directory utente come Desktop, Documents, Downloads, Music, Pictures, Videos. Anche queste vengono gestite tramite XDG, ma attraverso un file di configurazione dedicato, chiamato user-dirs.dirs, che indica alle applicazioni dove si trovano le cartelle standard. È il motivo per cui molti programmi propongono automaticamente la stessa cartella Download o Documenti, anche se l’hai rinominata o spostata.
In un sistema tipico, se non hai toccato nulla, le variabili XDG hanno valori simili a questi:
XDG_CONFIG_HOME="$HOME/.config"
XDG_DATA_HOME="$HOME/.local/share"
XDG_CACHE_HOME="$HOME/.cache"
XDG_STATE_HOME="$HOME/.local/state"
Le directory utente, invece, sono descritte nel file:
~/.config/user-dirs.dirs
dove trovi righe del tipo:
XDG_DOWNLOAD_DIR="$HOME/Scaricati"
XDG_DOCUMENTS_DIR="$HOME/Documenti"
È proprio su questi due livelli che andremo a lavorare per personalizzare Ubuntu e Fedora.
Directory XDG e home dell’utente su Ubuntu
Su Ubuntu le directory XDG vengono configurate automaticamente al primo login grafico, in base alla lingua scelta. Se usi l’ambiente grafico di default, dietro le quinte è il pacchetto xdg-user-dirs a creare cartelle come Documenti, Scaricati, Immagini e a scriverne i percorsi in ~/.config/user-dirs.dirs.
Se vuoi modificare queste cartelle su Ubuntu, il primo passo è sempre fare una verifica del file di configurazione. Puoi aprire un terminale e controllare il contenuto con un editor di testo, ad esempio:
nano ~/.config/user-dirs.dirs
All’interno vedrai una serie di variabili come XDG_DESKTOP_DIR, XDG_DOWNLOAD_DIR, XDG_DOCUMENTS_DIR e così via. Ognuna punta a una cartella, di solito in $HOME. Se per esempio hai deciso di avere una struttura più minimale e vuoi che la cartella Download si chiami download in minuscolo, puoi creare la cartella e poi aggiornare la variabile, passando da:
XDG_DOWNLOAD_DIR="$HOME/Scaricati"
a:
XDG_DOWNLOAD_DIR="$HOME/download"
Dopo aver salvato il file, per applicare i cambiamenti è consigliabile eseguire:
xdg-user-dirs-update
e poi disconnetterti e rientrare nella sessione grafica. A quel punto, molte applicazioni che rispettano lo standard XDG utilizzeranno la nuova posizione come cartella predefinita per i download.
Ubuntu, tramite l’ambiente GNOME, offre anche alcune impostazioni grafiche per cambiare le cartelle predefinite. A seconda della versione, nella sezione impostazioni relative a file e cartelle puoi impostare la posizione di Documenti, Musica, Immagini e simili. Quella interfaccia non fa altro che aggiornare user-dirs.dirs e rinominare fisicamente le cartelle.
Directory XDG e home dell’utente su Fedora
Su Fedora Workstation il meccanismo è sostanzialmente lo stesso, perché anche qui lo standard XDG viene gestito da xdg-user-dirs e dall’ambiente GNOME. Quando crei un nuovo utente e accedi per la prima volta, Fedora crea automaticamente cartelle come Documents, Downloads, Music, Pictures, Public, Templates, Videos, usando nomi tradotti o inglesi a seconda della lingua impostata.
Anche su Fedora il cuore della configurazione delle directory utente è il file:
~/.config/user-dirs.dirs
che puoi aprire con un editor di testo identico a quello visto per Ubuntu. Se vuoi, ad esempio, conservare il desktop completamente vuoto e non usare la cartella Desktop, puoi impostare:
XDG_DESKTOP_DIR="$HOME"
oppure puntarla a un’altra directory, ad esempio $HOME/scrivania se vuoi un nome personalizzato. Dopo la modifica, il comando:
xdg-user-dirs-update
fa sì che il sistema aggiorni i riferimenti e proponga il nuovo percorso alle applicazioni.
Fedora offre anche, nelle impostazioni di GNOME, una sezione dedicata alle cartelle personali, dove puoi selezionare graficamente i percorsi desiderati. Questa interfaccia è comoda per chi non vuole toccare file di testo, ma il risultato finale è lo stesso: vengono aggiornate le variabili XDG nel file di configurazione dell’utente.
Come modificare le directory XDG da riga di comando
La riga di comando resta il metodo più preciso per controllare le directory XDG sia su Ubuntu sia su Fedora. Il flusso di lavoro tipico prevede tre passaggi: creare o spostare fisicamente la cartella, aggiornare il file user-dirs.dirs e infine rigenerare le directory XDG con il comando dedicato.
Immagina di voler spostare la cartella Documenti su un’altra partizione montata in /mnt/dati. Per prima cosa crei la nuova cartella e sposti i file:
mkdir -p /mnt/dati/Documenti
mv ~/Documenti/* /mnt/dati/Documenti/
Poi apri il file delle user dirs:
nano ~/.config/user-dirs.dirs
e modifichi la riga corrispondente a XDG_DOCUMENTS_DIR, impostandola su:
XDG_DOCUMENTS_DIR="/mnt/dati/Documenti"
Una volta salvato, esegui:
xdg-user-dirs-update
e alla sessione successiva molte applicazioni proporranno automaticamente /mnt/dati/Documenti come cartella Documenti. In questo modo puoi distribuire i dati personali su più dischi o partizioni senza rompere l’integrazione con il desktop environment.
Configurare le variabili XDG base per le configurazioni
Oltre alle directory utente, lo standard XDG definisce dove salvare file di configurazione, dati applicativi e cache. Su Ubuntu e Fedora i valori predefiniti sono più che sufficienti per un uso normale, ma chi cura molto l’ordine della propria home o mantiene dotfile in un repository Git spesso preferisce personalizzare anche queste variabili.
Le principali variabili interessate sono:
XDG_CONFIG_HOME
XDG_DATA_HOME
XDG_CACHE_HOME
XDG_STATE_HOME
Se non sono impostate, il sistema assume automaticamente percorsi come $HOME/.config, $HOME/.local/share, $HOME/.cache e $HOME/.local/state. Se però vuoi, per esempio, avere una directory centrale per tutte le configurazioni versionate, puoi definire XDG_CONFIG_HOME in modo esplicito.
Sia su Ubuntu sia su Fedora la pratica più comune è impostare le variabili XDG nel file che inizializza la shell per ogni sessione, ad esempio ~/.profile, ~/.bash_profile, ~/.bashrc o ~/.zshenv a seconda della shell utilizzata. Un esempio minimale potrebbe essere:
export XDG_CONFIG_HOME="$HOME/.config"
export XDG_DATA_HOME="$HOME/.local/share"
export XDG_CACHE_HOME="$HOME/.cache"
export XDG_STATE_HOME="$HOME/.local/state"
Se vuoi spostare davvero i file in un’altra posizione, prima crei le nuove cartelle, poi ci sposti le configurazioni e infine aggiorni le variabili. Ad esempio, per raccogliere tutti i config in una cartella chiamata .dotconfig:
mkdir -p "$HOME/.dotconfig"
mv "$HOME/.config"/* "$HOME/.dotconfig"/
rmdir "$HOME/.config"
e nel file di inizializzazione della shell imposti:
export XDG_CONFIG_HOME="$HOME/.dotconfig"
Dopo il logout e nuovo login, i programmi che rispettano lo standard XDG inizieranno a creare le proprie directory di configurazione dentro .dotconfig. È importante però ricordare che molti software più vecchi continueranno a usare i classici file nascosti direttamente in home (~/.nomeprogramma), quindi la transizione non è sempre totale.
Esempi pratici di personalizzazione su Ubuntu e Fedora
Un esempio molto pratico su entrambe le distribuzioni è la gestione della cartella Scaricati o Downloads. Chi usa spesso il terminale e strumenti come wget o curl spesso preferisce una cartella dal nome più corto, o magari una struttura più vicina agli standard anglosassoni.
In questo caso puoi semplicemente creare una cartella download nella home, spostare i contenuti di Scaricati e aggiornare la riga XDG corrispondente, come visto prima. Il vantaggio è che i browser web, i client torrent e molti altri strumenti continueranno a proporre la cartella giusta senza che tu debba riconfigurare ogni singola applicazione.
Un altro scenario frequente è quello degli utenti che vogliono tenere separati i dati personali e i dati di lavoro. In questo caso è possibile usare XDG per puntare Documenti e Immagini verso directory controllate da un sistema di backup o da un repository, mantenendo invece i file temporanei nella home locale. Per esempio, su Fedora puoi impostare XDG_PICTURES_DIR su una cartella sincronizzata con un NAS, e continuare a usare la home del sistema come spazio di lavoro temporaneo.
Su Ubuntu, allo stesso modo, puoi sfruttare XDG per far puntare XDG_VIDEOS_DIR a un disco esterno sempre collegato, evitando di riempire il disco di sistema con video pesanti. La coerenza dell’esperienza utente rimane intatta, perché dal punto di vista del desktop non cambia nulla: le voci “Video”, “Documenti” e “Immagini” continuano a esistere nel file manager, ma dietro le quinte puntano a percorsi da te scelti.
Verificare che le applicazioni usino le directory XDG
Non tutte le applicazioni rispettano alla lettera lo standard XDG, soprattutto i programmi più datati o quelli portati da altri sistemi operativi. Tuttavia, molti software moderni su Ubuntu e Fedora usano le variabili e i file di configurazione descritti fin qui, sia per le directory utente sia per i percorsi di configurazione.
Per verificare rapidamente lo stato delle variabili XDG, puoi usare il comando:
env | grep XDG
che elenca tutte le variabili XDG correnti per la sessione. Se hai modificato ~/.bashrc o ~/.profile e non vedi le nuove variabili, è probabile che la sessione grafica non stia leggendo il file atteso, oppure che tu debba effettuare un logout completo e rientrare.
Per quanto riguarda le directory utente, il comando:
xdg-user-dirs-lookup DOWNLOAD
restituisce il percorso considerato ufficiale per i download. Puoi eseguire comandi simili con DOCUMENTS, MUSIC, PICTURES e altri identificatori per verificare che le modifiche siano state recepite. Se l’output corrisponde ai nuovi percorsi, ma alcune applicazioni continuano a usare quelli vecchi, è possibile che quelle specifiche app non implementino correttamente lo standard XDG e vadano configurate a parte.
[Immagine suggerita: terminale con il comando env | grep XDG in evidenza e una freccia verso un file manager che mostra le cartelle utente, a rappresentare la coerenza tra variabili e interfaccia grafica.]
Verso una home più ordinata e portabile
Configurare correttamente le directory XDG su Ubuntu e Fedora permette di superare la logica un po’ caotica della home piena di file nascosti e cartelle create a caso dai programmi, e adottare una struttura più ordinata e portabile. Con le variabili XDG di base puoi decidere dove vivono configurazioni, dati e cache, mentre con user-dirs.dirs puoi controllare in modo preciso dove puntano Documenti, Download, Musica, Immagini e gli altri percorsi standard.
Per chi usa più distribuzioni, magari con una stessa partizione dati condivisa tra Ubuntu e Fedora, questo approccio ha un vantaggio evidente: basta mantenere coerenti le directory XDG tra i due sistemi per ritrovare sempre le stesse cartelle, gli stessi documenti e la stessa organizzazione, indipendentemente dalla distro avviata.
In un contesto in cui Linux desktop diventa sempre più flessibile e personalizzabile, lo standard XDG è uno degli strumenti più potenti e spesso sottovalutati a disposizione dell’utente. Imparare a domarlo significa avere una home pulita, un workflow più lineare e configurazioni facili da salvare, sincronizzare e riprodurre altrove.
Qual è la differenza tra XDG Base Directory e XDG User Dirs?
Le XDG Base Directory definiscono dove le applicazioni salvano file di sistema utente come configurazioni (.config), dati (.local/share) e cache (.cache). Le XDG User Dirs gestiscono invece le cartelle visibili dell’utente come Documenti, Scaricati, Musica e Immagini.
Come posso spostare la cartella Download su un altro disco?
Devi prima spostare fisicamente la cartella sul nuovo disco, poi modificare il file ~/.config/user-dirs.dirs cambiando il percorso della variabile XDG_DOWNLOAD_DIR, e infine eseguire il comando xdg-user-dirs-update per applicare le modifiche.
Perché alcune applicazioni continuano a creare file nella home nonostante le modifiche XDG?
Non tutte le applicazioni rispettano lo standard XDG. Molti software datati o non ottimizzati hanno percorsi “hardcoded” e continueranno a creare le proprie cartelle nascoste (es. ~/.nomeapp) direttamente nella home, ignorando le variabili d’ambiente impostate.
A cosa serve il comando xdg-user-dirs-update?
Questo comando serve a rileggere il file di configurazione user-dirs.dirs e ad aggiornare le variabili d’ambiente della sessione corrente, assicurando che l’ambiente desktop e le applicazioni siano consapevoli dei nuovi percorsi assegnati alle cartelle utente.