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.

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
antimicroxAUR ~/.antimicro, ~/.antimicrox 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]
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]

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.
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

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 ~/.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 ~/.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
maven ~/.m2 [101] $ 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 [102] $ netbeans --userdir "${XDG_CONFIG_HOME}"/netbeans
Node.js ~/.node_repl_history $ export NODE_REPL_HISTORY="$XDG_DATA_HOME"/node_repl_history [103]
notmuch ~/.notmuch-config [104]

$ export NOTMUCH_CONFIG="$XDG_CONFIG_HOME"/notmuch/notmuchrc
$ export NMBGIT="$XDG_DATA_HOME"/notmuch/nmbug

npm

~/.npm
~/.npmrc

[105] $ 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 [106] $ 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 [107] Não honra totalmente a XDG Base Directory Specification, veja [108]

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 [109] $ pidgin --config="$XDG_DATA_HOME"/purple
PostgreSQL

~/.psqlrc
~/.psql_history
~/.pgpass
~/.pg_service.conf

9.2 [110] [111]

$ 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

[112] $ export PLTUSERHOME="$XDG_DATA_HOME"/racket
readline ~/.inputrc $ export INPUTRC="$XDG_CONFIG_HOME"/readline/inputrc
rlwrap ~/.*_history [113] $ 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 [114] $ export RUSTUP_HOME="$XDG_DATA_HOME"/rustup
sbt ~/.sbt

~/.ivy2

[115] $ sbt -ivy "$XDG_DATA_HOME"/ivy2 -sbt-dir "$XDG_DATA_HOME"/sbt (cuidado com [116])
GNU Screen ~/.screenrc $ export SCREENRC="$XDG_CONFIG_HOME"/screen/screenrc
Haskell#Stack ~/.stack [117] $ export STACK_ROOT="$XDG_DATA_HOME"/stack
subversion ~/.subversion [118] [119][120] $ 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 [121] $ 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

[122]

$ export VAGRANT_HOME="$XDG_DATA_HOME"/vagrant
$ export VAGRANT_ALIAS_FILE="$XDG_DATA_HOME"/vagrant/aliases

WeeChat ~/.weechat [123] [124]

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

[126]

$ 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

[127] $ export _Z_DATA="$XDG_DATA_HOME/z"

Codificado

Aplicativo Caminho legal Discussão Observações
adb ~/.android/ [128] $ export ANDROID_SDK_HOME="$XDG_CONFIG_HOME"/android
AMule ~/.aMule
Android Studio

~/.AndroidStudio2.3
~/.android/
~/.java/

anthy ~/.anthy [129]
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/ [130] 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/ [131]
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/ [132]
cryptomatorAUR ~/.Cryptomator [133]
CUPS ~/.cups/ não vai corrigir
darcs ~/.darcs/ [134]
dbus ~/.dbus/ [135] Isso deve ser evitável com kdbus [citação necessária].
devede ~/.devedeng Codificado aqui
Dia ~/.dia/
dotnet-sdk ~/.dotnet/ [136]
Eclipse ~/.eclipse/ [137] A opção [email protected]/.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/

[138] É 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/ [139]
Flatpak ~/.var/ [140] [141] não vai corrigir
GHC ~/.ghc [142]
ghidra [143]
GoldenDict ~/.goldendict/ [144]
gramps ~/.gramps/ [145]
grsync ~/.grsync/ [146]
gtk-recordMyDesktop ~/.gtk-recordmydesktop
hplip ~/.hplip/ [147]
idris ~/.idris [148]
iwd / iwctl ~/.iwctl_history
Java OpenJDK ~/.java/fonts [149]
Java OpenJFX ~/.java/webview
julia

~/.juliarc.jl
~/.julia_history

[150] [151]
Linux PAM ~/.pam_environment [152] 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/ [153]
Minetest ~/.minetest/ não vai corrigir [154]
mongodb

~/.mongorc.js
~/.dbshell

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

~/.solfege
~/.solfegerc
~/lessonfiles

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

~/.spacemacs
~/.spacemacs.d

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

~/.sqlite_history
~/.sqliterc

[165] $ export SQLITE_HISTORY=$XDG_DATA_HOME/sqlite_history

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

Steam

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

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

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

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

$ export VIMPERATOR_RUNTIME="$XDG_CONFIG_HOME"/vimperator

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

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

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