XDG Base Directory (Português) - ArchWiki

Jump to content

# XDG Base Directory (Português)

From ArchWiki
Status de tradução: Esse artigo é uma tradução de XDG Base Directory. Data da última tradução: 2019-11-24. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.

Artigos relacionados

- dotfiles
- Diretórios de usuário XDG

Esse artigo resumo a especificação XDG Base Directory em #Especificação e rastreia o suporte por softwares em #Suporte.

## Especificação

Leia a especificação completa. Essa seção vai tentar destrinchar a essência do que a especificação tenta alcançar.

Apenas `XDG_RUNTIME_DIR` está definido por padrão por meio de pam_systemd(8). É deixado para que o usuário defina explicitamente as demais variáveis de acordo com a especificação.

### Diretórios de usuário

- `XDG_CONFIG_HOME`
  - Onde configurações específicas do usuário devem ser escrita (análogo a `/etc`).
  - O padrão deve ser `$HOME/.config`.

- `XDG_CACHE_HOME`
  - Onde dados (em cache) não essenciais e específicos do usuário devem ser escritos (análogo a `/var/cache`).
  - O padrão deve ser `$HOME/.cache`.

- `XDG_DATA_HOME`
  - Onde arquivos de dados específicos do usuário devem ser escritos (análogo a `/usr/share`).
  - O padrão deve ser `$HOME/.local/share`.

- `XDG_RUNTIME_DIR`
  - Usado para arquivos de dados não essenciais e específicos do usuário, como soquetes, pipes nomeados etc.
  - Não é necessário ter um valor padrão; avisos devem ser emitidos se não definido ou equivalentes não forem fornecidos.
  - Deve pertencer ao usuário com um modo de acesso de `0700`.
  - Sistema de arquivos totalmente caracterizado pelos padrões do sistema operacional.
  - Deve estar no sistema de arquivos local.
  - Pode estar sujeito a limpeza periódica.
  - Modificado a cada 6 horas ou defina um bit adesivo se desejar persistência.
  - Só pode existir durante o início de sessão do usuário.
  - Não deve armazenar arquivos grandes, pois pode ser montado como um tmpfs.

### Diretórios de sistema

- `XDG_DATA_DIRS`
  - Lista de diretórios separadas por `:` (análogo a `PATH`).
  - O padrão deve ser `/usr/local/share:/usr/share`.

- `XDG_CONFIG_DIRS`
  - Lista os diretórios separados por `:` (análogo a `PATH`).
  - O padrão deve ser `/etc/xdg`.

## Suporte

Esta seção existe para catalogar o crescente conjunto de softwares usando a XDG Base Directory Specification introduzida em 2003. Isso está aqui para demonstrar a viabilidade desta especificação listando os arquivos de ponto comumente encontrados e seu status de suporte. Para aqueles que atualmente não oferecem suporte à Base Directory Specification, as soluções alternativas serão demonstradas como emulação.

As soluções alternativas serão limitadas a qualquer coisa que não envolva o patch da fonte, a execução do código armazenado em variáveis de ambiente ou as opções de tempo de compilação. A lógica para isso é que as configurações devem ser portáveis entre sistemas e ter opções em tempo de compilação evitam isso.

Espera-se que isso forneça uma fonte de informações sobre exatamente o que são certos tipos de arquivos-ponto (dotfiles) e de onde eles vêm.

### Contribuindo

Ao contribuir, certifique-se de usar a seção correta.

Nada deve exigir avaliação de código (como vim e `VIMINIT`), patches ou opções em tempo de compilação para obter suporte e qualquer coisa que deva ser considerada codificada. Além disso, se o processo for muito propenso a erros ou difícil, como cabal do Haskell ou Eclipse, eles também deverão ser considerados como codificados.

- A primeira coluna deve ser um link para um artigo interno, um Template:Pkg ou um Template:AUR.
- A segunda coluna é para todos os arquivos e diretórios legados que o projeto tinha (um por linha); isso é feito para que as pessoas possam encontrá-los, mesmo que não sejam mais lidos.
- Na terceira, tente encontrar o commit ou a versão de um projeto que mudou para o XDG Base Directory ou quaisquer discussões abertas e inclua-as nas próximas duas colunas (duas por linha).
- A última coluna deve incluir quaisquer soluções alternativas ou soluções apropriadas. Verifique se sua solução está correta e funcional.

### Tem suporte

Aplicativo | Caminho legado | Suporte desde | Discussão | Observações
--- | --- | --- | --- | ---
aerc-gitAUR |  |  |  |
antimicrox | `~/.antimicro`, `~/.antimicrox` | edba864 | [1] |
aria2 | `~/.aria2` | 8bc1d37 | [2] |
asunderAUR | `~/.asunder ~/.asunder_album_artist ~/.asunder_album_genre ~/.asunder_album_title` | 2.9.0[link inativo 2020-08-06 ⓘ] | [3][link inativo 2020-08-06 ⓘ] | Usa `XDG_CONFIG_HOME/asunder/asunder` para `~/.asunder` e `XDG_CACHE_HOME/asunder/asunder_album_...` para outros 3 arquivos. Caminhos legados não são removidos após a migração, tendo que ser excluídos manualmente.
binwalk | `~/.binwalk` | 2051757 | [4] | `$XDG_CONFIG_HOME/binwalk` Há suporte apenas no branch master do Git, não havendo lançamentos estáveis atualizados.
Blender | `~/.blender` | 4293f47[link inativo 2025-03-15 ⓘ] | [5] |
calibre |  |  |  |
Chromium | `~/.chromium` | 23057 | [6] [7] |
citra-gitAUR[link quebrado: package not found] | `~/.citra-emu` | f7c3193[link inativo 2024-07-30 ⓘ] | [8][link inativo 2024-07-30 ⓘ] |
Composer | `~/.composer` | 1.0.0-beta1 | [9] |
d-feetAUR | `~/.d-feet` | 7f6104b |  |
dconf |  |  |  |
Dolphin emulator | `~/.dolphin-emu` | a498c68 | [10] |
dr14_tmeterAUR[link quebrado: package not found] |  | 7e777ca | [11] | `XDG_CONFIG_HOME/dr14tmeter/`
dunst |  | 78b6e2b | [12] |
elixir | `~/.mix` | afaf889 | [13] |
fish |  |  |  |
fontconfig | `~/.fontconfig ~/.fonts` | 8c255fb |  | Usa `"$XDG_DATA_HOME"/fonts` para armazenar fones.
fontforge | `~/.FontForge ~/.PfaEdit` | e4c2cc7 | [14] [15] |
freerdp | `~/.freerdp` | edf6e72 |  |
Gajim | `~/.gajim` | 3e777ea | [16] |
gconfAUR | `~/.gconf` | fc28caa | [17] |
GIMP | `~/.gimp-x.y ~/.thumbnails` | 60e0cfe 483505f | [18] [19] |
Git | `~/.gitconfig` | 0d94427 |  |
GStreamer | `~/.gstreamer-0.10` | 4e36f93 | [20] |
GTK 3 |  |  |  |
htop | `~/.htoprc` | 93233a6 |  |
i3 | `~/.i3` | 7c130fb[link inativo 2025-08-16 ⓘ] |  |
i3status | `~/.i3status.conf` | c3f7fc4[link inativo 2025-08-16 ⓘ] |  |
imagemagick |  |  |  |
Inkscape | `~/.inkscape` | 0.47 | [21] |
Kakoune |  |  |  |
latexmk (em texlive-basic) | `~/.latexmkrc` |  |  |
lftp | `~/.lftp` | 21dc400 | [22] |
lgogdownloaderAUR | `~/.gogdownloader` | d430af6 | [23] |
LibreOffice |  | a6f56f7[link inativo 2025-11-17 ⓘ] 25bd2ee[link inativo 2025-11-17 ⓘ] | [24] |
Streamlink | `~/.livestreamerrc` | ea80591 | [25] |
llpp |  | 3ab86f0 |  | Atualmente, llpp coloca a configuração diretamente sob `XDG_CONFIG_HOME`, em vez de criar um diretório.
mc | `~/.mc` | 1b99570 0b71156 ce401d7 | [26] |
Mercurial | `~/.hgrc` | 3540200 4.2 |  | `XDG_CONFIG_HOME/hg/hgrc`.
msmtp | `~/.msmtprc` | af2f409 v1.6.7+ |  | `$XDG_CONFIG_HOME"/msmtp/config`.
mesa |  | 87ab26b |  | `XDG_CACHE_HOME/mesa`
milkytracker | `~/.milkytracker_config` | eb487c5 | [27] |
mpd | `~/.mpdconf` | 87b7328 |  |
mpv | `~/.mpv` | cb250d4 | [28] |
mutt | `~/.mutt` | b17cd67 | [29] |
mypaint | `~/.mypaint` | cf723b7 |  |
nano | `~/.nano/ ~/.nanorc` | c16e79b | [30] |
ncmpcpp | `~/.ncmpcpp` | 38d9f81 27cd86e | [31] [32] | `ncmpcpp_directory` deve ser definido para evitar um arquivo `error.log` em `~/.ncmpcpp`.
Neovim | `~/.nvim ~/.nvimlog ~/.nviminfo` | 1ca5646[link inativo 2024-01-13 ⓘ] | [33] [34] |
newsbeuter | `~/.newsbeuter` | 3c57824 | [35] | É necessário criar ambos diretórios [36]: `$ mkdir -p "$XDG_DATA_HOME"/newsbeuter "$XDG_CONFIG_HOME"/newsbeuter`
node-gyp | `~/.node-gyp` | 2b5ce52a | [37] | Disponível apenas no master até 2018-12-04.
np2kai-gitAUR | `~/.config/np2kai ~/.config/xnp2kai` | 56a1cc2 | [38] |
nteract-binAUR |  | 4593e72 | [39] [40] | não reconhece soluções alternativas para ipython/jupyter
OfflineIMAP | `~/.offlineimaprc` | 5150de5 | [41] |
opentyrianAUR | `~/.opentyrian` | 39559c3 | [42] |
pandoc-cli | `~/.pandoc/` | 0bed0ab | [43] |
pcsx2AUR | `~/.pcsx2` | 87f1e8f a9020c6 3b22f0f 0a012ae | [44] [45] |
Pry | `~/.pryrc ~/.pry_history` | a0be0cc7 15e1fc92 e9d1be0e | [46] |
python-pip | `~/.pip` | 6.0 | [47] |
powershellAUR |  | 6.0 |  |
ppsspp | `~/.ppsspp` | 132fe47 | [48] |
procps-ng | `~/.toprc` | af53e17 | [49] [50] |
pacman | `~/.makepkg.conf` | 80eca94 | [51] |
panda3dAUR | `~/.panda3d` | 2b537d2 |  |
PulseAudio | `~/.pulse ~/.pulse-cookie` | 59a8618 87ae830 9ab510a 4c195bc | [52] |
pyroomAUR |  |  |  |
quodlibet | `~/.quodlibet` | 3.10.0 | [53] |
qutebrowser |  |  |  |
qtile |  | fd8686e 66d704b 51cff01 | [54] | Algumas barras opcionais podem criar arquivos e diretórios em caminhos sem conformidade, mas geralmente eles ainda são configuráveis.
rclone | `~/.rclone.conf` | 9d36258 | [55] |
retroarch |  |  |  |
rrAUR | `~/.rr` | 02e7d41 | [56] |
RSpec | `~/.rspec` | 5e395e2 | [57] |
rTorrent | `~/.rtorrent.rc` | 6a8d332 |  |
RuboCop | `~/.rubocop.yml` | 6fe5956 | [58] |
snes9x | `~/.snes9x` | 93b5f11 | [59] | Por padrão, o arquivo de configuração é deixado em branco com a intenção de que o usuário vá preenchendo-o de acordo com sua própria vontade (por interface gráfica ou manualmente).
sublime-text-devAUR |  |  |  | O cache é colocado em `$XDG_CONFIG_HOME/sublime-text-3/Cache` em vez do esperado `$XDG_CACHE_HOME/sublime-text-3`.
surfraw | `~/.surfraw.conf ~/.surfraw.bookmarks` | 3e4591d bd8c427 f57fc71 |  |
sway | `~/.sway/config` | 614393c | [60] |
systemd |  |  |  |
termite |  |  |  |
tig | `~/.tigrc`, `~/.tig_history` | 2.2 | [61] | O diretório `~/.local/share/tig` deve existir, do contrário escreve para `~/.tig_history`.
tmuxinatorAUR | `~/.tmuxinator` | 2636923 | [62] |
Transmission | `~/.transmission` | b71a298 |  |
util-linux |  | 570b321 |  |
Uzbl |  | c6fd63a | [63] |
vimb |  |  |  |
VirtualBox | `~/.VirtualBox` | 4.3 | [64] |
vis | `~/.vis` | 68a25c7 d138908 | [65] |
VLC | `~/.vlcrc` | 16f32e1[link inativo 2023-05-06 ⓘ] | [66] |
Visual Studio Code |  |  |  | Note que o diretório de extensões não vai ser movido; veja [67].
warsow | `~/.warsow-2.x` | 98ece3f | [68] |
Wireshark | `~/.wireshark` | b0b53fa[link inativo 2022-09-23 ⓘ] |  |
xsettingsd-gitAUR | `~/.xsettingsd` | b4999f5 |  |
xmonad | `~/.xmonad` | 40fc10b | [69] [70] | Alternativamente, as variáveis de ambiente `XMONAD_CONFIG_HOME`, `XMONAD_DATA_HOME` e `XMONAD_CACHE_HOME` também são configuráveis.
xsel | `~/.xsel.log` | ee7b481 | [71] |
yarn | `~/.yarnrc ~/.yarn/ ~/.yarncache/ ~/.yarn-config/` | 2d454b5 | [72] |

### Parcial

Aplicativo | Caminho legado | Suporte desde | Discussão | Observações
--- | --- | --- | --- | ---
abookAUR | `~/.abook` |  |  | `$ abook --config "$XDG_CONFIG_HOME"/abook/abookrc --datafile "$XDG_CACHE_HOME"/abook/addressbook`
ackAUR | `~/.ackrc` |  | [73] | `$ export ACKRC="$XDG_CONFIG_HOME/ack/ackrc"`
Anki | `~/Anki ~/Documents/Anki` |  | [74] [75] | `$ anki -b "$XDG_DATA_HOME"/Anki`
aspell | `~/.aspell.conf` |  |  | `$ export ASPELL_CONF="per-conf $XDG_CONFIG_HOME/aspell/aspell.conf; personal $XDG_CONFIG_HOME/aspell/en.pws; repl $XDG_CONFIG_HOME/aspell/en.prepl"`
atomAUR[link quebrado: package not found] | `~/.atom` |  | [76] | `$ export ATOM_HOME="$XDG_DATA_HOME"/atom`
aws-cli | `~/.aws` | 1.7.45 | [77] | `$ export AWS_SHARED_CREDENTIALS_FILE="$XDG_CONFIG_HOME"/aws/credentials $ export AWS_CONFIG_FILE="$XDG_CONFIG_HOME"/aws/config`
bash-completion | `~/.bash_completion` |  |  | `$ export BASH_COMPLETION_USER_FILE="$XDG_CONFIG_HOME"/bash-completion/bash_completion`
bazaar | `~/.bazaar ~/.bzr.log` | 2.3.0 | [78] | Discussão no relatório de erro do upstream informa que o bazaar vai usar `~/.config/bazaar` se existir. O arquivo de log `~/.bzr.log` ainda pode ser escrito.
Ruby#Bundler | `~/.bundle` |  | [79] [80] | `$ export BUNDLE_USER_CONFIG="$XDG_CONFIG_HOME"/bundle BUNDLE_USER_CACHE="$XDG_CACHE_HOME"/bundle BUNDLE_USER_PLUGIN="$XDG_DATA_HOME"/bundle`
calcurse | `~/.calcurse` |  | [81] | `$ calcurse -C "$XDG_CONFIG_HOME"/calcurse -D "$XDG_DATA_HOME"/calcurse`
Rust#Cargo | `~/.cargo` |  | [82] [83] [84] [85] | `$ export CARGO_HOME="$XDG_DATA_HOME"/cargo`
ccache | `~/.ccache` |  |  | `$ export CCACHE_CONFIGPATH="$XDG_CONFIG_HOME"/ccache.config` `$ export CCACHE_DIR="$XDG_CACHE_HOME"/ccache`
chez-schemeAUR | `~/.chezscheme_history` |  |  | `$ petite --eehistory "$XDG_DATA_HOME"/chezscheme/history`
conky | `~/.conkyrc` | 00481ee | [86] | `$ conky --config="$XDG_CONFIG_HOME"/conky/conkyrc`
coreutils | `~/.dircolors` |  |  | `$ source $(dircolors "$XDG_CONFIG_HOME"/dircolors)`
crawl | `~/.crawl` |  |  | A barra ao final é necessária: `$ export CRAWL_DIR="$XDG_DATA_HOME"/crawl/`
clusterssh | `~/.clusterssh/` |  |  | `$ alias cssh="cssh --config-file '$XDG_CONFIG_HOME/clusterssh/config'"`
    $XDG_CONFIG_HOME/clusterssh/config
    extra_cluster_file=$HOME/.config/clusterssh/clusters
    extra_tag_file=$HOMe/.config/clusterssh/tags
Apesar disso, clusterssh ainda vai criar `~/.clusterssh/`.
CUDA | `~/.nv` |  |  | `$ export CUDA_CACHE_PATH="$XDG_CACHE_HOME"/nv`
dict | `~/.dictrc` |  |  | `$ dict -c "$XDG_CONFIG_HOME"/dict/dictrc`
Docker | `~/.docker` |  |  | `$ export DOCKER_CONFIG="$XDG_CONFIG_HOME"/docker`
docker-machine | `~/.docker/machine` |  |  | `$ export MACHINE_STORAGE_PATH="$XDG_DATA_HOME"/docker-machine`
DOSBox | `~/.dosbox/dosbox-0.74-2.conf` |  | [87] | `$ dosbox -conf "$XDG_CONFIG_HOME"/dosbox/dosbox.conf`
ELinks | `~/.elinks` |  |  | `$ export ELINKS_CONFDIR="$XDG_CONFIG_HOME"/elinks`
emscripten | `~/.emscripten ~/.emscripten_sanity ~/.emscripten_ports ~/.emscripten_cache__last_clear` |  | [88] | `$ export EM_CONFIG="$XDG_CONFIG_HOME"/emscripten/config $ export EM_CACHE="$XDG_CACHE_HOME"/emscripten/cache $ export EM_PORTS="$XDG_DATA_HOME"/emscripten/cache $ emcc --em-config "$XDG_CONFIG_HOME"/emscripten/config --em-cache "$XDG_CACHE_HOME"/emscripten/cache`
freecad | `~/.FreeCAD` |  | [89] | `$ freecad -u "$XDG_CONFIG_HOME"/FreeCAD/user.cfg -s "$XDG_CONFIG_HOME"/FreeCAD/system.cfg` Apesar dessas opções, freecad ainda vai criar o arquivo `.FreeCAD/cookie`, pois o módulo web o tem codificado[link inativo 2024-07-30 ⓘ]
GDB | `~/.gdbinit` |  |  | `$ gdb -nh -x "$XDG_CONFIG_HOME"/gdb/init`
get_iplayerAUR | `~/.get_iplayer` |  |  | `$ export GETIPLAYERUSERPREFS="$XDG_DATA_HOME"/get_iplayer`
getmail | `~/.getmail/getmailrc` |  |  | `$ getmail --rcfile="$XDG_CONFIG_HOME/getmail/getmailrc" --getmaildir="$XDG_DATA_HOME/getmail"`
glivAUR | `~/.glivrc` |  |  | `$ gliv --glivrc="$XDG_CONFIG_HOME"/gliv/glivrc`
GnuPG | `~/.gnupg` |  | [90] [91] | `$ export GNUPGHOME="$XDG_DATA_HOME"/gnupg $ gpg2 --homedir "$XDG_DATA_HOME"/gnupg`
Google Earth | `~/.googleearth` |  |  | Alguns caminhos podem ser alterados com as opções `KMLPath` e `CachePath` em `~/.config/Google/GoogleEarthPlus.conf`
gopass | `~/.password-store` |  |  | Se sobrepõe às configurações em `~/.config/gopass/config.yml`:
    ~/.config/gopass/config.yml
    root:
    path: gpgcli-gitcli-fs+file:///home/<id-usuário>/.config/password-store
GQ LDAP client | `~/.gq ~/.gq-state` | 1.51 |  | `$ export GQRC="$XDG_CONFIG_HOME"/gqrc $ export GQSTATE="$XDG_DATA_HOME"/gq/gq-state $ mkdir -p "$(dirname "$GQSTATE")"`
Gradle | `~/.gradle` |  | [92] | `$ export GRADLE_USER_HOME="$XDG_DATA_HOME"/gradle`
GTK 1 | `~/.gtkrc` |  |  | `$ export GTK_RC_FILES="$XDG_CONFIG_HOME"/gtk-1.0/gtkrc`
GTK 2 | `~/.gtkrc-2.0` |  |  | `$ export GTK2_RC_FILES="$XDG_CONFIG_HOME"/gtk-2.0/gtkrc`
hledger | `~/.hledger.journal` |  | [93] | `$ export LEDGER_FILE="$XDG_DATA_HOME"/hledger.journal`
httpie | `~/.httpie` |  | [94] | `$ export HTTPIE_CONFIG_DIR="$XDG_CONFIG_HOME"/httpie`
intellij-idea-ceAUR[link quebrado: package not found] | `~/.IntelliJIdea*` |  | [95] |
    $ mkdir -p "${XDG_CONFIG_HOME}"/intellij-idea
    $ cp /opt/intellij-idea-ce/bin/{idea.properties,idea64.vmoptions} "${XDG_CONFIG_HOME}"/intellij-idea/
    $ export IDEA_PROPERTIES="${XDG_CONFIG_HOME}"/intellij-idea/idea.properties
    $ export IDEA_VM_OPTIONS="${XDG_CONFIG_HOME}"/intellij-idea/idea.vmoptions
    $XDG_CONFIG_HOME/idea.properties
    # esses são codificados, mas você pode obter a ideia
    idea.config.path=${user.home}/.config/intellij-idea
    idea.system.path=${user.home}/.cache/intellij-idea
    idea.log.path=${user.home}/.cache/intellij-idea/log
    idea.plugins.path=${user.home}/.local/share/intellij-idea/plugins
ipython/jupyter | `~/.ipython` |  | não vai corrigir | `$ export IPYTHONDIR="$XDG_CONFIG_HOME"/jupyter $ export JUPYTER_CONFIG_DIR="$XDG_CONFIG_HOME"/jupyter`
irb[link inativo 2023-05-06 ⓘ] | `~/.irbrc` |  |  |
    ~/.profile
    $ export IRBRC="$XDG_CONFIG_HOME"/irb/irbrc
    "$XDG_CONFIG_HOME"/irb/irbrc
    IRB.conf[:SAVE_HISTORY] ||= 1000
    IRB.conf[:HISTORY_FILE] ||= File.join(ENV["XDG_DATA_HOME"], "irb", "history")
irssi | `~/.irssi` |  | [96] | `$ irssi --config="$XDG_CONFIG_HOME"/irssi/config --home="$XDG_DATA_HOME"/irssi`
isync | `~/.mbsyncrc` |  |  | `$ mbsync -c "$XDG_CONFIG_HOME"/isync/mbsyncrc`
Java (Português)#OpenJDK | `~/.java/.userPrefs` |  | [97] | `$ export _JAVA_OPTIONS=-Djava.util.prefs.userRoot="$XDG_CONFIG_HOME"/java`
ledger | `~/.ledgerrc`, `~/.pricedb` |  | [98] | `$ ledger --init-file "$XDG_CONFIG_HOME"/ledgerrc`
less | `~/.lesshst` |  |  | `$ mkdir -p "$XDG_CACHE_HOME"/less $ export LESSKEY="$XDG_CONFIG_HOME"/less/lesskey $ export LESSHISTFILE="$XDG_CACHE_HOME"/less/history` `$ export LESSHISTFILE=-` pode ser usado para desabilitar esse recurso.
libdvdcss | `~/.dvdcss` |  | [99] | `$ export DVDCSS_CACHE="$XDG_DATA_HOME"/dvdcss`
libice | `~/.ICEauthority` |  | [100] | `$ export ICEAUTHORITY="$XDG_CACHE_HOME"/ICEauthority` Certifique-se que `XDG_CACHE_HOME` esteja definido antes para o usuário do diretório que está usando Xorg tenha acesso de escrita ao mesmo. Não use `XDG_RUNTIME_DIR`, pois ele está disponível após o início da sessão, do contrário os gerenciadores de exibição que iniciam Xorg (como o GDM) vão falhar repetidamente.
libx11 | `~/.XCompose ~/.compose-cache` |  |  | `$ export XCOMPOSEFILE="$XDG_CONFIG_HOME"/X11/xcompose $ export XCOMPOSECACHE="$XDG_CACHE_HOME"/X11/xcompose`
ltrace | `~/.ltrace.conf` |  |  | `$ ltrace -F "$XDG_CONFIG_HOME"/ltrace/ltrace.conf`
Luanti | `~/.minetest/` |  | [101] | `export MINETEST_USER_PATH="$XDG_DATA_HOME"/luanti`
maven | `~/.m2` |  | [102] | `$ mvn -gs "$XDG_CONFIG_HOME"/maven/settings.xml`
    settings.xml
    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                          https://maven.apache.org/xsd/settings-1.0.0.xsd">
      ...
      <localRepository>${env.XDG_CACHE_HOME}/maven/repository</localRepository>
      ...
    </settings>
Mathematica | `~/.Mathematica` |  |  | `$ export MATHEMATICA_USERBASE="$XDG_CONFIG_HOME"/mathematica`
mednafen | `~/.mednafen` |  |  | `$ export MEDNAFEN_HOME="$XDG_CONFIG_HOME"/mednafen`
MOC | `~/.moc` |  |  | `$ mocp -M "$XDG_CONFIG_HOME"/moc $ mocp -O MOCDir="$XDG_CONFIG_HOME"/moc`
monero | `~/.bitmonero` |  |  | `$ monerod --data-dir "$XDG_DATA_HOME"/bitmonero`
most | `~/.mostrc` |  |  | `$ export MOST_INITFILE="$XDG_CONFIG_HOME"/mostrc`
MPlayer | `~/.mplayer` |  |  | `$ export MPLAYER_HOME="$XDG_CONFIG_HOME"/mplayer`
MySQL | `~/.mysql_history` |  |  | `$ export MYSQL_HISTFILE="$XDG_DATA_HOME"/mysql_history`
ncurses | `~/.terminfo` |  |  | Preclui a pesquisa de caminho do sistema: `$ export TERMINFO="$XDG_DATA_HOME"/terminfo $ export TERMINFO_DIRS="$XDG_DATA_HOME"/terminfo:/usr/share/terminfo`
ncmpc | `~/.ncmpc` |  |  | `ncmpc -f "$XDG_CONFIG_HOME"/ncmpc/config`
Netbeans | `~/.netbeans` |  | [103] | `$ netbeans --userdir "${XDG_CONFIG_HOME}"/netbeans`
Node.js | `~/.node_repl_history` |  |  | `$ export NODE_REPL_HISTORY="$XDG_DATA_HOME"/node_repl_history` [104]
notmuch | `~/.notmuch-config` |  | [105] | `$ export NOTMUCH_CONFIG="$XDG_CONFIG_HOME"/notmuch/notmuchrc $ export NMBGIT="$XDG_DATA_HOME"/notmuch/nmbug`
npm | `~/.npm ~/.npmrc` |  | [106] | `$ export NPM_CONFIG_USERCONFIG=$XDG_CONFIG_HOME/npm/npmrc`
    npmrc
    prefix=${XDG_DATA_HOME}/npm
    cache=${XDG_CACHE_HOME}/npm
    tmp=${XDG_RUNTIME_DIR}/npm
    init-module=$XDG_CONFIG_HOME/npm/config/npm-init.js
`prefix` é desnecessário (e não há suporte) se o Node.js for instalado por nvm.
nuget | `~/.nuget/packages` |  | [107] | `$ export NUGET_PACKAGES="$XDG_CACHE_HOME"/NuGetPackages`
NVIDIA | `~/.nv` |  |  | Usa `XDG_CACHE_HOME` se definido, do contrário retrocede inadequadamente para `~/.nv` em vez de `~/.cache`.
nvidia-settings | `~/.nvidia-settings-rc` |  |  | `$ nvidia-settings --config="$XDG_CONFIG_HOME"/nvidia/settings`
nvm | `~/.nvm` |  |  | `$ export NVM_DIR="$XDG_DATA_HOME"/nvm`
Octave | `~/octave ~/.octave_packages ~/.octave_hist` |  |  | `$ export OCTAVE_HISTFILE="$XDG_CACHE_HOME/octave-hsts" $ export OCTAVE_SITE_INITFILE="$XDG_CONFIG_HOME/octave/octaverc"`
    $XDG_CONFIG_HOME/octave/octaverc
    source /usr/share/octave/site/m/startup/octaverc;
    pkg prefix ~/.local/share/octave/packages ~/.local/share/octave/packages;
    pkg local_list /home/<your username>/.local/share/octave/octave_packages;
Deve-se fornecer à opção `local_list` um caminho absoluto.
openscad | `~/.OpenSCAD` | 7c3077b0f | [108] | Não honra totalmente a XDG Base Directory Specification, veja [109] Atualmente, ele codifica[link inativo 2022-09-23 ⓘ] `~/.local/share`.
OpenSSL | `~/.rnd` |  |  | O local do arquivo semeador `.rnd` pode ser definido com a varável de ambiente `RANDFILE` conforme FAQ.
parallel | `~/.parallel` | 20170422 |  | `$ export PARALLEL_HOME="$XDG_CONFIG_HOME"/parallel`
Pass | `~/.password-store` |  |  | `$ export PASSWORD_STORE_DIR="$XDG_DATA_HOME"/pass`
Pidgin | `~/.purple` |  | [110] | `$ pidgin --config="$XDG_DATA_HOME"/purple`
PostgreSQL | `~/.psqlrc ~/.psql_history ~/.pgpass ~/.pg_service.conf` | 9.2 | [111] [112] | `$ export PSQLRC="$XDG_CONFIG_HOME/pg/psqlrc" $ export PSQL_HISTORY="$XDG_CACHE_HOME/pg/psql_history" $ export PGPASSFILE="$XDG_CONFIG_HOME/pg/pgpass" $ export PGSERVICEFILE="$XDG_CONFIG_HOME/pg/pg_service.conf"` É necessário criar ambos diretórios: `$ mkdir "$XDG_CONFIG_HOME/pg" && mkdir "$XDG_CACHE_HOME/pg"`
PulseAudio | `~/.esd_auth` |  |  | Provavelmente gerado pelo módulo `module-esound-protocol-unix.so`. Ele pode ser configurado para usar um local diferente, mas faz muito mais sentido apenas comentar este módulo em `/etc/pulse/default.pa` ou `"$XDG_CONFIG_HOME"/pulse/default.pa`.
python-azure-cliAUR[link quebrado: package not found] | `~/.azure` |  |  | `$ export AZURE_CONFIG_DIR=$XDG_DATA_HOME/azure`
python-setuptools | `~/.python-eggs` |  |  | `$ export PYTHON_EGG_CACHE="$XDG_CACHE_HOME"/python-eggs`
python-pylint | `~/.pylint.d` |  | não vai corrigir | `$ export PYLINTHOME="$XDG_CACHE_HOME"/pylint`
racket | `~/.racketrc` `~/.racket` |  | [113] | `$ export PLTUSERHOME="$XDG_DATA_HOME"/racket`
readline | `~/.inputrc` |  |  | `$ export INPUTRC="$XDG_CONFIG_HOME"/readline/inputrc`
rlwrap | `~/.*_history` |  | [114] | `$ export RLWRAP_HOME="$XDG_DATA_HOME"/rlwrap`
Ruby#RubyGems | `~/.gem` |  |  | `$ export GEM_HOME="$XDG_DATA_HOME"/gem $ export GEM_SPEC_CACHE="$XDG_CACHE_HOME"/gem` Certifique-se de remover `gem: --user-install` de `/etc/gemrc`
Rust#rustup | `~/.rustup` |  | [115] | `$ export RUSTUP_HOME="$XDG_DATA_HOME"/rustup`
sbt | `~/.sbt` `~/.ivy2` |  | [116] | `$ sbt -ivy "$XDG_DATA_HOME"/ivy2 -sbt-dir "$XDG_DATA_HOME"/sbt` (cuidado com [117])
GNU Screen | `~/.screenrc` |  |  | `$ export SCREENRC="$XDG_CONFIG_HOME"/screen/screenrc`
Haskell#Stack | `~/.stack` |  | [118] | `$ export STACK_ROOT="$XDG_DATA_HOME"/stack`
subversion | `~/.subversion` |  | [119] [120][121] | `$ svn --config-dir "$XDG_CONFIG_HOME"/subversion`
task | `~/.task ~/.taskrc` |  |  | `$ export TASKDATA="$XDG_DATA_HOME"/task $ export TASKRC="$XDG_CONFIG_HOME"/task/taskrc`
tiptopAUR | `~/.tiptoprc` |  |  | Ele ainda vai espera haver o arquivo `.tiptoprc`. `$ tiptop -W "$XDG_CONFIG_HOME"/tiptop`
tmux | `~/.tmux.conf` |  | [122] | `$ tmux -f "$XDG_CONFIG_HOME"/tmux/tmux.conf` `$ export TMUX_TMPDIR="$XDG_RUNTIME_DIR"`
uncrustify | `~/.uncrustify.cfg` |  |  | `$ export UNCRUSTIFY_CONFIG="$XDG_CONFIG_HOME"/uncrustify/uncrustify.cfg`
Unison | `~/.unison` |  |  | `$ export UNISON="$XDG_DATA_HOME"/unison`
urxvtd | `~/.urxvt/urxvtd-hostname` |  |  | `$ export RXVT_SOCKET="$XDG_RUNTIME_DIR"/urxvtd`
Vagrant | `~/.vagrant.d ~/.vagrant.d/aliases` |  | [123] | `$ export VAGRANT_HOME="$XDG_DATA_HOME"/vagrant $ export VAGRANT_ALIAS_FILE="$XDG_DATA_HOME"/vagrant/aliases`
WeeChat | `~/.weechat` |  | [124] [125] | `$ export WEECHAT_HOME="$XDG_CONFIG_HOME"/weechat $ weechat -d "$XDG_CONFIG_HOME"/weechat`
wget | `~/.wgetrc ~/.wget-hsts` |  |  | `$ export WGETRC="$XDG_CONFIG_HOME/wgetrc"` e adicionar o seguinte como um alias para wget: `$ wget --hsts-file="$XDG_CACHE_HOME/wget-hsts"` ou definir a variável `hsts-file` com um caminho absoluto, pois `wgetrc` não tem suporte a variáveis de ambiente: `$ echo hsts-file \= "$XDG_CACHE_HOME"/wget-hsts >> "$XDG_CONFIG_HOME/wgetrc"`
wine | `~/.wine` |  | [126] | Winetricks usa local tipo XDG abaixo para gerenciamento de WINEPREFIX: `$ mkdir -p "$XDG_DATA_HOME"/wineprefixes $ export WINEPREFIX="$XDG_DATA_HOME"/wineprefixes/default`
xbindkeys | `~/.xbindkeysrc` |  |  | `$ xbindkeys -f "$XDG_CONFIG_HOME"/xbindkeys/config`
xorg-xauth | `~/.Xauthority` |  |  | `$ export XAUTHORITY="$XDG_RUNTIME_DIR"/Xauthority`
xinit | `~/.xinitrc ~/.xserverrc` |  | [127] | `$ export XINITRC="$XDG_CONFIG_HOME"/X11/xinitrc $ export XSERVERRC="$XDG_CONFIG_HOME"/X11/xserverrc` Note que essas variáveis são respeitadas pelo xinit, mas não pelo startx. Em vez disso, especifique o nome de arquivo como um argumento: `$ startx "$XDG_CONFIG_HOME/X11/xinitrc" -- "$XDG_CONFIG_HOME/X11/xserverrc" vt1`
xorg-xrdb | `~/.Xresources ~/.Xdefaults` |  |  | Em última análise, você deve estar usando `Xresources` e já que esses recursos são carregados por meio de `xrdb`, você pode especificar um caminho como `$ xrdb -load ~/.config/X11/xresources`.
z | `~/.z` |  | [128] | `$ export _Z_DATA="$XDG_DATA_HOME/z"`

### Codificado

Aplicativo | Caminho legal | Discussão | Observações
--- | --- | --- | ---
adb | `~/.android/` | [129] | `$ export ANDROID_SDK_HOME="$XDG_CONFIG_HOME"/android`
AMule | `~/.aMule` |  |
Android Studio | `~/.AndroidStudio2.3 ~/.android/ ~/.java/` |  |
anthy | `~/.anthy` | [130] |
Apache Directory Studio | `~/.ApacheDirectoryStudio` |  |
ARandR | `~/.screenlayout` |  |
Arduino | `~/.arduino15 ~/.jssc` | não vai corrigir |
Audacity | `~/.audacity-data/` |  |
Avidemux | `~/.avidemux6` |  |
Bash | `~/.bashrc ~/.bash_history ~/.bash_profile ~/.bash_login ~/.bash_logout` | não vai corrigir | `$ export HISTFILE="$XDG_DATA_HOME"/bash/history` Um `bashrc` especificado pode ser carregado a partir de `/etc/bash.bashrc`. Especifique `--init-file <arquivo>` como uma alternativa a `~/.bashrc` para shells interativos.
cabal | `~/.cabal/` | [131] | Veja a discussão para soluções alternativas em potencial. Não é muito fácil ou direta, mas pode ser possível emular a conformidade com Base Directory.
chatty | `~/.chatty/` | [132] |
cmake | `~/.cmake/` |  | Usado para registro de pacote de usuário `~/.cmake/packages/<pacote>`, detalhado em cmake-packages(7) § User Package Registry e na página wiki de Package registry. Parece que é codificado, por exemplo em cmFindPackageCommand.cxx.
Cinnamon | `~/.cinnamon/` | [133] |
cryptomatorAUR | `~/.Cryptomator` | [134] |
CUPS | `~/.cups/` | não vai corrigir |
darcs | `~/.darcs/` | [135] |
dbus | `~/.dbus/` | [136] | Isso deve ser evitável com kdbus [citação necessária].
devede | `~/.devedeng` |  | Codificado aqui
Dia | `~/.dia/` |  |
dotnet-sdk | `~/.dotnet/` | [137] |
Eclipse | `~/.eclipse/` | [138] | A opção `-Dosgi.configuration.area=@user.home/.config/..` sobrescreve, mas deve ser adicionado para `"$ECLIPSE_HOME"/eclipse.ini"` em vez de linha de comando que significa que você tem que ter acesso de escrita para `$ECLIPSE_HOME`. (Arch Linux codifica `$ECLIPSE_HOME` em `/usr/bin/eclipse`)
Emacs | `~/.emacs ~/.emacs.d/` | [139] | É possível definir `HOME`, mas tem efeitos colaterais inesperados. Até agora, a abordagem mais promissora é modificar outra variável de ambiente do Emacs para alterar o caminho de carregamento e criar o seu próprio arquivo de site, que pode carregar manualmente o arquivo init, mas altera significativamente o processo de carregamento.
Fetchmail | `~/.fetchmailrc` |  |
Firefox | `~/.mozilla/` | [140] |
Flatpak | `~/.var/` | [141] [142] não vai corrigir |
GHC | `~/.ghc` | [143][link inativo 2025-04-06 ⓘ] |
ghidra |  | [144] |
GoldenDict | `~/.goldendict/` | [145] |
gramps | `~/.gramps/` | [146] |
grsync | `~/.grsync/` | [147] |
gtk-recordMyDesktop | `~/.gtk-recordmydesktop` |  |
hplip | `~/.hplip/` | [148] |
idris | `~/.idris` | [149] |
iwd / iwctl | `~/.iwctl_history` |  |
Java OpenJDK | `~/.java/fonts` | [150] |
Java OpenJFX | `~/.java/webview` |  |
julia | `~/.juliarc.jl ~/.julia_history` | [151] [152] |
lldb | `~/.lldb ~/.lldbinit` |  |
mathomatic | `~/.mathomaticrc ~/.matho_history` |  | O histórico pode ser movido usando `rlwrap mathomatic -r` com o ambiente `RLWRAP_HOME` definido apropriadamente.
Minecraft | `~/.minecraft/` | [153] |
mongodb | `~/.mongorc.js ~/.dbshell` | [154] | Esse tópico do Stack Overflow sugere uma solução alternativa parcial usando a opção de linha de comando `--norc`.
Nestopia UE | `~/.nestopia/` | não vai corrigir |
| `~/.netrc` |  | Assim como `~/.ssh`, muitos programas esperam que esse arquivo esteja aqui. Estes incluem projetos como curl (`CURLOPT_NETRC_FILE`), ftp (`NETRC`), s-nail (`NETRC`), etc. Enquanto alguns deles oferecem locais alternativos configuráveis, muitos não o fazem, como w3m, wget e lftp.
Networkmanager-openvpn | `~/.cert/nm-openvpn` | [155] |
NSS | `~/.pki` | [156] |
OpenSSH | `~/.ssh` | não vai corrigir | Presume-se estar presente por muitos daemons e clientes de ssh, tal como DropBear e OpenSSH.
palemoon | `~/.moonchild productions` | [157] |
parsec-binAUR | `~/.parsec` |  |
pcsxrAUR | `~/.pcsxr` |  | Uma opção `-cfg` existe, mas só pode ser definido relativo a `~/.pcsxr`.
perf | `~/.debug` |  | Codificado em tools/perf/util/config.c:29.
vários shells e gerenciadores de exibição | `~/.profile` |  |
python | `~/.python_history` |  | Todo o histórico de sessões interativas salvas em `~/.python_history` por padrão desde a versão 3.4, um caminho personalizado ainda pode ser definido na mesma forma como em versões antigas (veja este exemplo).
Qt Designer | `~/.designer` |  |
RedNotebook | `~/.rednotebook` |  |
Remarkable | `~/.remarkable` |  |
Ren'Py | `~/.renpy` | [158] |
SANE | `~/.sane/` |  | `scanimage` cria um arquivo `.cal` lá
scribus | `~/.scribus` |  |
sdcv | `~/.stardict/` | [159] | A única solução alternativa é modificar `HOME`
SeaMonkey | `~/.mozilla/` | [160] |
simplescreenrecorderAUR | `~/.ssr/` | [161] | O autor parece não concordar com esse recurso.
Solfege | `~/.solfege ~/.solfegerc ~/lessonfiles` | [162] |
spacemacs | `~/.spacemacs ~/.spacemacs.d` | [163] |
SpamAssassin | `~/.spamassassin` |  |
spectrwm | `~/.spectrwm` |  |
SQLite | `~/.sqlite_history ~/.sqliterc` | [164] | `$ export SQLITE_HISTORY=$XDG_DATA_HOME/sqlite_history` `$ sqlite3 -init "$XDG_CONFIG_HOME"/sqlite3/sqliterc`
Steam | `~/.steam ~/.steampath ~/.steampid` | [165] | Muitos motores de jogo (Unity 3D, Unreal) seguem a especificação, mas publicadores de jogo individual codificam os caminhos em Steam Auto-Cloud fazendo os salvamento de jogos sincronizar para diretório errado.
TeamSpeak | `~/.ts3client` |  |
texinfo | `~/.infokey` |  | `$ info --init-file "$XDG_CONFIG_HOME/infokey"`
TeXmacs | `~/.TeXmacs` |  |
Thunderbird | `~/.thunderbird/` | [166] |
tllocalmgr | `~/.texlive` |  |
vim | `~/.vim ~/.vimrc ~/.viminfo` | [167] | A partir de 7.3.1178, vem com suporte a `~/.vim/vimrc` se `~/.vimrc` não for encontrado. `$ mkdir -p "$XDG_DATA_HOME"/vim/{undo,swap,backup}`
    "$XDG_CONFIG_HOME"/vim/vimrc
    set undodir=$XDG_DATA_HOME/vim/undo
    set directory=$XDG_DATA_HOME/vim/swap
    set backupdir=$XDG_DATA_HOME/vim/backup
    set viminfo+='1000,n$XDG_DATA_HOME/vim/viminfo
    set runtimepath=$XDG_CONFIG_HOME/vim,$VIMRUNTIME,$XDG_CONFIG_HOME/vim/after
    ~/.profile
    export VIMINIT=":source $XDG_CONFIG_HOME"/vim/vimrc
https://tlvince.com/vim-respect-xdg
vimperator | `~/.vimperatorrc` | [168] | `$ export VIMPERATOR_INIT=":source $XDG_CONFIG_HOME/vimperator/vimperatorrc"` `$ export VIMPERATOR_RUNTIME="$XDG_CONFIG_HOME"/vimperator`
w3m | `~/.w3m` | [169] |
wpa_cli | `~/.wpa_cli_history` |  |
xdg-utils | `~/.gnome` | [170] | Por algum motivo o script `xdg-desktop-menu` codifica `gnome_user_dir="$HOME/.gnome/apps"`. Isso é usado por chromium entre outros.
xombrero | `~/.xombrero` | [171][link inativo 2020-08-06 ⓘ] |
xournalpp | `~/.xournalpp` | [172] |
YARD | `~/.yard` | [173] | Aceitaria uma Pull Request se alguém quisesse implementá-la.
zenmap nmap | `~/.zenmap` | [174] [175] |
zsh | `~/.zshrc ~/.zprofile ~/.zshenv ~/.zlogin ~/.zlogout ~/.histfile ~/.zcompdump` | [176] | Considere exportar `ZDOTDIR=$HOME/.config/zsh` em `~/.zshenv` (isso é codificado por causa de problema de inicialização). Você também poderia adicionar isso a `/etc/zsh/zshenv` e evita a necessidade de quaisquer dotfiles em seu `HOME`. Porém, fazer isso requer privilégios de root que não ser viável e é para todo sistema. `$ export HISTFILE="$XDG_DATA_HOME"/zsh/history` `$ compinit -d $XDG_CACHE_HOME/zsh/zcompdump-$ZSH_VERSION` [177] /!\ A pasta precisa existir

## Bibliotecas

C
  C99: implementação simples do Cloudef.

JVM
  Java, Kotlin, Clojure, Scala, ...
  directories-jvm

Go
  go-appdir

Haskell
  Oficialmente no diretório desde 1.2.3.0 ab9d0810ce.
  xdg-basedir

Perl
  File-BaseDir
  perl-file-xdg[link inativo 2020-08-06 ⓘ]

Ruby
  rubyworks/xdg

Rust
  directories-rs
  rust-xdg

Python
  pyxdg

Vala
  Suporte embarcado via GLib.Environment.
  Veja `get_user_cache_dir`, `get_user_data_dir`, `get_user_config_dir`, etc.

## Veja também

- GNOME Goal: XDG Base Directory Specification Usage
- Rob Pike: "Dotfiles" sendo oculto é um erro UNIXv2.
- systemd-path(1)
- file-hierarchy(7)
- Notas do Grawity sobre dotfiles.
- Notas do Grawity sobre variáveis de ambiente.
- ploum.net: Modify Your Application to use XDG Folders.
- A tentativa PCGamingWiki para documentar se jogos de PC no Linux seguem ou não a XDG Base Directory Specification.

Categories:

- Freedesktop.org (Português)
- Configuration files (Português)
- Development (Português)

Hidden categories:

- Pages with dead links
- Pages with broken package links

XDG Base Directory (Português)
Add topic