XDG Base Directory (Portuguê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
.
- Onde configurações específicas do usuário devem ser escrita (análogo a
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 .
- Onde dados (em cache) não essenciais e específicos do usuário devem ser escritos (análogo a
-
- Onde arquivos de dados específicos do usuário devem ser escritos (análogo a ).
- O padrão deve ser .
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 ).
- O padrão deve ser .
-
- Lista os diretórios separados por (análogo a ).
- O padrão deve ser .
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 ), 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 |
---|---|---|---|---|
~/.antimicro , ~/.antimicrox |
edba864 | |||
aria2 | 8bc1d37 | |||
2.9.0 | Usa para e para outros 3 arquivos. Caminhos legados não são removidos após a migração, tendo que ser excluídos manualmente. | |||
~/.binwalk |
2051757 | Há suporte apenas no branch master do Git, não havendo lançamentos estáveis atualizados. | ||
Blender | ~/.blender |
4293f47 | ||
Chromium | 23057 | |||
f7c3193 | ||||
Composer | 1.0.0-beta1 | |||
7f6104b | ||||
Dolphin emulator | ~/.dolphin-emu |
a498c68 | ||
7e777ca | ||||
78b6e2b | ||||
elixir | afaf889 | |||
fish | ||||
fontconfig | 8c255fb | Usa para armazenar fones. | ||
e4c2cc7 | ||||
freerdp | edf6e72 | |||
Gajim | 3e777ea | |||
fc28caa | ||||
GIMP | ||||
Git | 0d94427 | |||
GStreamer | 4e36f93 | |||
GTK 3 | ||||
htop | 93233a6 | |||
i3 | ~/.i3 |
7c130fb | ||
c3f7fc4 | ||||
Inkscape | 0.47 | |||
Kakoune | ||||
latexmk (em ) | ||||
~/.lftp |
21dc400 | |||
~/.gogdownloader |
d430af6 | |||
LibreOffice | ||||
Streamlink | ea80591 | |||
llpp | 3ab86f0 | Atualmente, llpp coloca a configuração diretamente sob XDG_CONFIG_HOME , em vez de criar um diretório. | ||
mc | ||||
Mercurial | . | |||
msmtp |
af2f409 v1.6.7+ |
. | ||
87ab26b | XDG_CACHE_HOME/mesa | |||
~/.milkytracker_config |
eb487c5 | |||
mpd | 87b7328 | |||
mpv | cb250d4 | |||
mutt | b17cd67 | |||
cf723b7 | ||||
nano | c16e79b | |||
ncmpcpp | ncmpcpp_directory deve ser definido para evitar um arquivo em . | |||
Neovim | 1ca5646 | |||
newsbeuter | ~/.newsbeuter |
3c57824 | É necessário criar ambos diretórios : | |
node-gyp | 2b5ce52a | Disponível apenas no master até 2018-12-04. | ||
56a1cc2 | ||||
4593e72 | não reconhece soluções alternativas para ipython/jupyter | |||
OfflineIMAP | 5150de5 | |||
opentyrianAUR | 39559c3 | |||
0bed0ab | ||||
pcsx2 | ||||
Pry | ||||
6.0 | ||||
6.0 | ||||
~/.ppsspp |
132fe47 | |||
af53e17 | ||||
pacman | 80eca94 | |||
~/.panda3d |
2b537d2 | |||
PulseAudio | ||||
3.10.0 | ||||
qutebrowser | ||||
qtile | Algumas barras opcionais podem criar arquivos e diretórios em caminhos sem conformidade, mas geralmente eles ainda são configuráveis. | |||
rclone | 9d36258 | |||
02e7d41 | ||||
RSpec | 5e395e2 | |||
rTorrent | 6a8d332 | |||
RuboCop | ~/.rubocop.yml |
6fe5956 | ||
8.0 | ||||
snes9x | 93b5f11 | 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). | ||
O cache é colocado em em vez do esperado . | ||||
surfraw | ||||
sway | 614393c | |||
systemd | ||||
termite | ||||
, ~/.tig_history |
2.2 | O diretório deve existir, do contrário escreve para ~/.tig_history . | ||
tmuxinatorAUR | 2636923 | |||
Transmission | b71a298 | |||
570b321 | ||||
Uzbl | c6fd63a | |||
VirtualBox | 4.3 | |||
VLC | ~/.vlcrc |
16f32e1 | ||
Visual Studio Code | Note que o diretório de extensões não vai ser movido; veja . | |||
~/.warsow-2.x |
98ece3f | |||
Wireshark | b0b53fa | |||
b4999f5 | ||||
xmonad | 40fc10b | Alternativamente, as variáveis de ambiente , e também são configuráveis. | ||
xsel | ee7b481 | |||
2d454b5 |
Parcial
Aplicativo | Caminho legado | Suporte desde | Discussão | Observações |
---|---|---|---|---|
ack | ||||
Anki |
|
|||
aspell | ||||
Atom | ||||
~/.aws |
1.7.45 | |||
$ export BASH_COMPLETION_USER_FILE="$XDG_CONFIG_HOME"/bash-completion/bash_completion | ||||
bazaar | 2.3.0 | Discussão no relatório de erro do upstream informa que o bazaar vai usar se existir. O arquivo de log ainda pode ser escrito. | ||
Ruby#Bundler | ||||
$ calcurse -C "$XDG_CONFIG_HOME"/calcurse -D "$XDG_DATA_HOME"/calcurse | ||||
Rust#Cargo | $ export CARGO_HOME="$XDG_DATA_HOME"/cargo | |||
ccache | ||||
conky | 00481ee | $ conky --config="$XDG_CONFIG_HOME"/conky/conkyrc | ||
coreutils | ||||
crawl | A barra ao final é necessária:
| |||
Apesar disso, clusterssh ainda vai criar . | ||||
CUDA | ||||
dict | ~/.dictrc |
|||
Docker | ||||
docker-machine | ||||
DOSBox | ||||
ELinks | $ export ELINKS_CONFDIR="$XDG_CONFIG_HOME"/elinks | |||
Apesar dessas opções, ainda vai criar o arquivo , pois o módulo web o tem codificado | ||||
GDB | ~/.gdbinit |
|||
~/.get_iplayer |
||||
getmail | ||||
GnuPG | ~/.gnupg |
|||
Google Earth | Alguns caminhos podem ser alterados com as opções e em | |||
gopass | Se sobrepõe às configurações em : | |||
GQ LDAP client | 1.51 | |||
Gradle | ~/.gradle |
|||
GTK 1 | ||||
GTK 2 | ||||
hledger | ||||
~/.httpie |
||||
ipython/jupyter | não vai corrigir | |||
irb | ~/.irbrc |
|||
irssi | ~/.irssi |
|||
isync | ||||
Java (Português)#OpenJDK | ||||
ledger | , | $ ledger --init-file "$XDG_CONFIG_HOME"/ledgerrc | ||
less |
pode ser usado para desabilitar esse recurso. | |||
libdvdcss | ||||
Certifique-se que Não use | ||||
libx11 |
|
|||
~/.m2 |
||||
Mathematica | ||||
mednafen | ||||
MOC | ||||
most | ||||
MPlayer | $ export MPLAYER_HOME="$XDG_CONFIG_HOME"/mplayer | |||
MySQL | ||||
Preclui a pesquisa de caminho do sistema: | ||||
ncmpc | ||||
Netbeans | $ netbeans --userdir "${XDG_CONFIG_HOME}"/netbeans | |||
Node.js | ||||
notmuch | ||||
$ export NPM_CONFIG_USERCONFIG=$XDG_CONFIG_HOME/npm/npmrc
é desnecessário (e não há suporte) se o Node.js for instalado por . | ||||
~/.nuget/packages |
||||
NVIDIA | Usa XDG_CACHE_HOME se definido, do contrário retrocede inadequadamente para em vez de . | |||
~/.nvidia-settings-rc |
||||
Octave |
Deve-se fornecer à opção um caminho absoluto. | |||
7c3077b0f | Não honra totalmente a XDG Base Directory Specification, veja
Atualmente, ele codifica . | |||
OpenSSL | ~/.rnd |
O local do arquivo semeador pode ser definido com a varável de ambiente conforme FAQ. | ||
20170422 | $ export PARALLEL_HOME="$XDG_CONFIG_HOME"/parallel | |||
Pass | ||||
Pidgin | ||||
PostgreSQL | 9.2 |
É necessário criar ambos diretórios: | ||
PulseAudio | Provavelmente gerado pelo módulo . Ele pode ser configurado para usar um local diferente, mas faz muito mais sentido apenas comentar este módulo em ou . | |||
python-azure-cliAUR | ||||
python-pylint | não vai corrigir | |||
$ export PLTUSERHOME="$XDG_DATA_HOME"/racket | ||||
readline | ||||
Ruby#RubyGems |
Certifique-se de remover de | |||
Rust#Rustup | $ export RUSTUP_HOME="$XDG_DATA_HOME"/rustup | |||
(cuidado com ) | ||||
GNU Screen | ||||
Haskell#Stack | ~/.stack |
|||
subversion | ||||
|
||||
Ele ainda vai espera haver o arquivo . | ||||
tmux | ~/.tmux.conf |
|||
Unison | ~/.unison |
|||
urxvtd | ||||
Vagrant |
|
|||
WeeChat | ||||
wget |
| |||
wine | Winetricks usa local tipo XDG abaixo para gerenciamento de WINEPREFIX:
| |||
xbindkeys | ||||
xinit |
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: | |||
Em última análise, você deve estar usando e já que esses recursos são carregados por meio de xrdb , você pode especificar um caminho como . | ||||
Codificado
Aplicativo | Caminho legal | Discussão | Observações |
---|---|---|---|
adb | $ export ANDROID_SDK_HOME="$XDG_CONFIG_HOME"/android | ||
AMule | |||
Android Studio | |||
anthy | |||
Apache Directory Studio | |||
ARandR | |||
Arduino |
|
não vai corrigir | |
Audacity | |||
Avidemux | |||
Bash | não vai corrigir |
Um Especifique como uma alternativa a para shells interativos. | |
cabal | 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. | ||
cmake | Usado para registro de pacote de usuário , detalhado em e na página wiki de Package registry. Parece que é codificado, por exemplo em cmFindPackageCommand.cxx. | ||
Cinnamon | |||
cryptomatorAUR | |||
CUPS | não vai corrigir | ||
darcs | |||
dbus | Isso deve ser evitável com kdbus [citação necessária]. | ||
Codificado aqui | |||
Dia | ~/.dia/ |
||
Eclipse | A opção -Dosgi.configuration.area=@user.home/.config/.. sobrescreve, mas deve ser adicionado para em vez de linha de comando que significa que você tem que ter acesso de escrita para . (Arch Linux codifica em ) | ||
Emacs | É possível definir , 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 | |||
Flatpak | não vai corrigir | ||
GHC | ~/.ghc |
||
GoldenDict | |||
gtk-recordMyDesktop | ~/.gtk-recordmydesktop |
||
idris | |||
iwd / iwctl | ~/.iwctl_history |
||
Java OpenJDK | |||
Java OpenJFX | |||
julia | |||
lldb | |||
mathomatic | O histórico pode ser movido usando rlwrap mathomatic -r com o ambiente definido apropriadamente. | ||
Minecraft | |||
Minetest | não vai corrigir | ||
mongodb | Esse tópico do Stack Overflow sugere uma solução alternativa parcial usando a opção de linha de comando . | ||
Nestopia UE | não vai corrigir | ||
~/.netrc |
Assim como , muitos programas esperam que esse arquivo esteja aqui. Estes incluem projetos como curl (), ftp (), s-nail (), etc. Enquanto alguns deles oferecem locais alternativos configuráveis, muitos não o fazem, como w3m, wget e lftp. | ||
Networkmanager-openvpn | |||
NSS | ~/.pki |
||
OpenSSH | não vai corrigir | Presume-se estar presente por muitos daemons e clientes de ssh, tal como DropBear e OpenSSH. | |
palemoon | |||
Uma opção existe, mas só pode ser definido relativo a . | |||
perf | ~/.debug |
Codificado em tools/perf/util/config.c:29. | |
vários shells e gerenciadores de exibição | |||
python | Todo o histórico de sessões interativas salvas em 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 | |||
Remarkable | |||
Ren'Py | |||
SANE | cria um arquivo lá | ||
scribus | |||
A única solução alternativa é modificar | |||
SeaMonkey | |||
simplescreenrecorder | O autor parece não concordar com esse recurso. | ||
Solfege | |||
spacemacs | |||
SpamAssassin | |||
spectrwm | ~/.spectrwm |
||
SQLite | |||
Steam | 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 | |||
~/.infokey |
|||
TeXmacs | |||
Thunderbird | |||
tllocalmgr | |||
vim |
|
A partir de 7.3.1178, vem com suporte a se não for encontrado. | |
vimperator | $ export VIMPERATOR_INIT=":source $XDG_CONFIG_HOME/vimperator/vimperatorrc"
| ||
~/.w3m |
|||
wpa_cli | |||
Por algum motivo o script codifica . Isso é usado por chromium entre outros. | |||
xombrero | ~/.xombrero |
||
~/.xournalpp |
|||
YARD | Aceitaria uma Pull Request se alguém quisesse implementá-la. | ||
zenmap | |||
zsh | Considere exportar em (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 . Porém, fazer isso requer privilégios de root que não ser viável e é para todo sistema.
/!\ A pasta precisa existir |
Bibliotecas
- JVM
- Java, Kotlin, Clojure, Scala, ...
- directories-jvm
- Go
- go-appdir
- Haskell
- Oficialmente no diretório desde 1.2.3.0 ab9d0810ce.
- xdg-basedir
- Ruby
- rubyworks/xdg
- Rust
- directories-rs
- rust-xdg
- Python
- pyxdg
- Vala
- Suporte embarcado via GLib.Environment.
- Veja , ,
get_user_config_dir
, etc.
Veja também
- GNOME Goal: XDG Base Directory Specification Usage
- Rob Pike: "Dotfiles" sendo oculto é um erro UNIXv2.
- 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.