XDG Base Directory (Português)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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.

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. É 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
antimicroAUR[link quebrado: package not found] ~/.antimicro edba864 [1]
aria2 ~/.aria2 8bc1d37 [2]
asunder

~/.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 [5]
calibre
Chromium ~/.chromium 23057

[6] [7]

citra-gitAUR ~/.citra-emu f7c3193 [8]
Composer ~/.composer 1.0.0-beta1 [9]
d-feet ~/.d-feet 7f6104b
dconf
Dolphin emulator ~/.dolphin-emu a498c68 [10]
dr14_tmeterAUR 7e777ca [11] XDG_CONFIG_HOME/dr14tmeter/
dunst 78b6e2b [12]
dwb
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
i3status ~/.i3status.conf c3f7fc4
imagemagick
Inkscape ~/.inkscape 0.47 [21]
Kakoune
latexmk (em texlive-core) ~/.latexmkrc
lftp ~/.lftp 21dc400 [22]
lgogdownloaderAUR ~/.gogdownloader d430af6 [23]
LibreOffice

a6f56f7 25bd2ee

[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

[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 ~/.pandoc/ 0bed0ab [43]
pcsx2 ~/.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]

orbment-gitAUR[link quebrado: package not found]
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]
skypeforlinux-stable-binAUR ~/.Skype 8.0
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 [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
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
ack ~/.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"
Atom ~/.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.
buchhaltung-gitAUR

~/.buchhaltung

[79] $ export BUCHHALTUNG="$XDG_CONFIG_HOME"/buchhaltung
Ruby#Bundler ~/.bundle [80] [81] $ export BUNDLE_USER_CONFIG="$XDG_CONFIG_HOME"/bundle BUNDLE_USER_CACHE="$XDG_CACHE_HOME"/bundle BUNDLE_USER_PLUGIN="$XDG_DATA_HOME"/bundle
calcurse ~/.calcurse [82] $ calcurse -C "$XDG_CONFIG_HOME"/calcurse -D "$XDG_DATA_HOME"/calcurse
Rust#Cargo ~/.cargo [83] [84] [85] [86] $ 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 [87] $ 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 [88] $ 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

[89]

$ 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 [90] $ 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

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 [91] [92]

$ 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 [93] $ 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 [94] $ export LEDGER_FILE="$XDG_DATA_HOME"/hledger.journal
httpie ~/.httpie [95] $ export HTTPIE_CONFIG_DIR="$XDG_CONFIG_HOME"/httpie
intellij-idea-ceAUR ~/.IntelliJIdea* [96]
$ 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 ~/.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 [97] $ 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 [98] $ export _JAVA_OPTIONS=-Djava.util.prefs.userRoot="$XDG_CONFIG_HOME"/java
ledger ~/.ledgerrc, ~/.pricedb [99] $ 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 [100] $ export DVDCSS_CACHE="$XDG_DATA_HOME"/dvdcss
libice ~/.ICEauthority [101] $ 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
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 nvmAUR.

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
nvmAUR ~/.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 ~/.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 ~/.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.
chattyAUR ~/.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]
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]
Linux PAM ~/.pam_environment [153] Codificado em modules/pam_env/pam_env.c
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/ [154]
Minetest ~/.minetest/ não vai corrigir [155]
mongodb

~/.mongorc.js
~/.dbshell

[156] 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 [157]
NSS ~/.pki [158]
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 [159]
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 [160]
SANE ~/.sane/ scanimage cria um arquivo .cal
scribus ~/.scribus
sdcv ~/.stardict/ [161] A única solução alternativa é modificar HOME
SeaMonkey ~/.mozilla/ [162]
simplescreenrecorder ~/.ssr/ [163] O autor parece não concordar com esse recurso.
Solfege

~/.solfege
~/.solfegerc
~/lessonfiles

[164]
spacemacs[link inativo 2020-08-06 ⓘ]

~/.spacemacs
~/.spacemacs.d

[165]
SpamAssassin ~/.spamassassin
spectrwm ~/.spectrwm
SQLite

~/.sqlite_history
~/.sqliterc

[166] $ export SQLITE_HISTORY=$XDG_DATA_HOME/sqlite_history

$ sqlite3 -init "$XDG_CONFIG_HOME"/sqlite3/sqliterc

Steam

~/.steam
~/.steampath
~/.steampid

[167] 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/ [168]
tllocalmgr ~/.texlive
vim

~/.vim
~/.vimrc
~/.viminfo

[169] 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
vimperator ~/.vimperatorrc [170] $ export VIMPERATOR_INIT=":source $XDG_CONFIG_HOME/vimperator/vimperatorrc"

$ export VIMPERATOR_RUNTIME="$XDG_CONFIG_HOME"/vimperator

w3m ~/.w3m [171]
wpa_cli ~/.wpa_cli_history
xdg-utils ~/.gnome [172] Por algum motivo o script xdg-desktop-menu codifica gnome_user_dir="$HOME/.gnome/apps". Isso é usado por chromium entre outros.
xombrero ~/.xombrero [173][link inativo 2020-08-06 ⓘ]
xournalpp ~/.xournalpp [174]
YARD ~/.yard [175] Aceitaria uma Pull Request se alguém quisesse implementá-la.
zenmap nmap ~/.zenmap [176] [177]
zsh

~/.zshrc
~/.zprofile
~/.zshenv
~/.zlogin
~/.zlogout
~/.histfile
~/.zcompdump

[178] 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 [179] /!\ 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