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
-
- Lista de diretórios separadas por (análogo a ).
- O padrão deve ser
/usr/local/share:/usr/share.
-
- 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 |
|---|---|---|---|---|
, ~/.antimicrox |
edba864 | |||
| aria2 | 8bc1d37 | |||
| 2.9.0[link inativo 2020-08-06 ⓘ] | [link inativo 2020-08-06 ⓘ] | 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. | ||
| 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 | |||
~/.d-feet |
7f6104b | |||
| Dolphin emulator | a498c68 | |||
| 7e777ca | XDG_CONFIG_HOME/dr14tmeter/ | |||
| 78b6e2b | ||||
| afaf889 | ||||
| fish | ||||
| fontconfig | 8c255fb | Usa para armazenar fones. | ||
|
|
e4c2cc7 | |||
| edf6e72 | ||||
| Gajim | 3e777ea | |||
| fc28caa | ||||
| GIMP |
|
|||
| Git | 0d94427 | |||
| GStreamer | 4e36f93 | |||
| GTK 3 | ||||
| 93233a6 | ||||
| i3 | 7c130fb | |||
| i3status | c3f7fc4 | |||
| Inkscape | 0.47 | |||
| Kakoune | ||||
| latexmk (em ) | ||||
~/.lftp |
21dc400 | |||
| d430af6 | ||||
| LibreOffice | ||||
| Streamlink | ~/.livestreamerrc |
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 | |||
| eb487c5 | ||||
| mpd | 87b7328 | |||
| mpv | cb250d4 | |||
| mutt | b17cd67 | |||
| cf723b7 | ||||
| nano | c16e79b | |||
| ncmpcpp | ~/.ncmpcpp |
deve ser definido para evitar um arquivo em ~/.ncmpcpp. | ||
| Neovim |
|
1ca5646 | ||
| 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 | ||||
| Pry | ~/.pryrc |
|||
| 6.0 | ||||
| 6.0 | ||||
| 132fe47 | ||||
| procps-ng | af53e17 | |||
| pacman | 80eca94 | |||
| 2b537d2 | ||||
| PulseAudio | ||||
| pyroomAUR | ||||
| 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.conf |
9d36258 | |||
| 02e7d41 | ||||
| RSpec | 5e395e2 | |||
| rTorrent | 6a8d332 | |||
| RuboCop | 6fe5956 | |||
~/.Skype |
8.0 | |||
| 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 | ||||
| , | 2.2 | O diretório ~/.local/share/tig deve existir, do contrário escreve para . | ||
| 2636923 | ||||
| Transmission | b71a298 | |||
| 570b321 | ||||
| Uzbl | c6fd63a | |||
| VirtualBox | 4.3 | |||
| vis | ||||
| VLC | 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 XMONAD_CACHE_HOME também são configuráveis. | ||
| ee7b481 | ||||
| 2d454b5 |
Parcial
| Aplicativo | Caminho legado | Suporte desde | Discussão | Observações |
|---|---|---|---|---|
$ abook --config "$XDG_CONFIG_HOME"/abook/abookrc --datafile "$XDG_CACHE_HOME"/abook/addressbook | ||||
| Anki |
|
|||
| aspell | ||||
| Atom | ||||
| 1.7.45 | ||||
| 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 | $ export BUNDLE_USER_CONFIG="$XDG_CONFIG_HOME"/bundle BUNDLE_USER_CACHE="$XDG_CACHE_HOME"/bundle BUNDLE_USER_PLUGIN="$XDG_DATA_HOME"/bundle | |||
$ calcurse -C "$XDG_CONFIG_HOME"/calcurse -D "$XDG_DATA_HOME"/calcurse | ||||
| Rust#Cargo | ||||
| ccache | ||||
~/.chezscheme_history |
||||
| conky | 00481ee | |||
| coreutils | ||||
| crawl | ~/.crawl |
A barra ao final é necessária: | ||
|
Apesar disso, clusterssh ainda vai criar . | ||||
| CUDA | ~/.nv |
|||
| dict | ||||
| Docker | ||||
$ export MACHINE_STORAGE_PATH="$XDG_DATA_HOME"/docker-machine | ||||
| DOSBox | $ dosbox -conf "$XDG_CONFIG_HOME"/dosbox/dosbox.conf | |||
| ELinks | ||||
$ freecad -u "$XDG_CONFIG_HOME"/FreeCAD/user.cfg -s "$XDG_CONFIG_HOME"/FreeCAD/system.cfg
Apesar dessas opções, ainda vai criar o arquivo , pois o módulo web o tem codificado | ||||
| GDB | ||||
| getmail | $ getmail --rcfile="$XDG_CONFIG_HOME/getmail/getmailrc" --getmaildir="$XDG_DATA_HOME/getmail" | |||
| GnuPG | ~/.gnupg |
|||
| Google Earth | Alguns caminhos podem ser alterados com as opções e em | |||
Se sobrepõe às configurações em ~/.config/gopass/config.yml:
| ||||
| GQ LDAP client | 1.51 |
| ||
| Gradle | ||||
| GTK 1 | ||||
| GTK 2 | ||||
~/.hledger.journal |
||||
$ 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
| ||||
| ipython/jupyter | não vai corrigir | |||
| irb | ~/.irbrc |
|||
| irssi | ||||
| isync | ||||
| Java (Português)#OpenJDK | ~/.java/.userPrefs |
|||
| ledger | , | |||
| less |
| |||
| libice |
Certifique-se que Não use | |||
| libx11 | ||||
| maven | ||||
| Mathematica | ||||
~/.mednafen |
||||
| MOC | ||||
| monero | ||||
| MPlayer | $ export MPLAYER_HOME="$XDG_CONFIG_HOME"/mplayer | |||
| MySQL | ||||
~/.terminfo |
Preclui a pesquisa de caminho do sistema: | |||
| Netbeans | ||||
| Node.js | $ export NODE_REPL_HISTORY="$XDG_DATA_HOME"/node_repl_history | |||
| notmuch | ||||
|
|
é desnecessário (e não há suporte) se o Node.js for instalado por . | |||
~/.nuget/packages |
||||
| NVIDIA | ~/.nv |
Usa XDG_CACHE_HOME se definido, do contrário retrocede inadequadamente para ~/.nv em vez de . | ||
| Octave |
Deve-se fornecer à opção um caminho absoluto. | |||
| 7c3077b0f | Não honra totalmente a XDG Base Directory Specification, veja
Atualmente, ele codifica | |||
| OpenSSL | O local do arquivo semeador pode ser definido com a varável de ambiente conforme FAQ. | |||
~/.parallel |
20170422 | |||
| Pass | ||||
| Pidgin | ||||
| PostgreSQL | 9.2 |
É necessário criar ambos diretórios: | ||
| PulseAudio | ~/.esd_auth |
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 | ||||
~/.pylint.d |
não vai corrigir | |||
| readline | $ export INPUTRC="$XDG_CONFIG_HOME"/readline/inputrc | |||
| Ruby#RubyGems |
Certifique-se de remover de | |||
| Rust#Rustup | ||||
$ sbt -ivy "$XDG_DATA_HOME"/ivy2 -sbt-dir "$XDG_DATA_HOME"/sbt (cuidado com ) | ||||
| GNU Screen | ||||
| Haskell#Stack | $ export STACK_ROOT="$XDG_DATA_HOME"/stack | |||
| subversion | ||||
~/.tiptoprc |
Ele ainda vai espera haver o arquivo . | |||
| tmux | ||||
$ export UNCRUSTIFY_CONFIG="$XDG_CONFIG_HOME"/uncrustify/uncrustify.cfg | ||||
| Unison | $ export UNISON="$XDG_DATA_HOME"/unison | |||
| urxvtd | ||||
| Vagrant | ||||
| WeeChat | ||||
| wget |
| |||
| wine | Winetricks usa local tipo XDG abaixo para gerenciamento de WINEPREFIX:
| |||
| xbindkeys | ||||
$ export XAUTHORITY="$XDG_RUNTIME_DIR"/Xauthority | ||||
| 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 , você pode especificar um caminho como . | ||||
| z | $ export _Z_DATA="$XDG_DATA_HOME/z" |
Codificado
| Aplicativo | Caminho legal | Discussão | Observações |
|---|---|---|---|
| adb | |||
| AMule | |||
| Android Studio | |||
| anthy | |||
| Apache Directory Studio | |||
| ARandR | |||
| Arduino | não vai corrigir | ||
| Audacity | ~/.audacity-data/ |
||
| Avidemux | |||
| Bash | não vai corrigir |
Um especificado pode ser carregado a partir de . Especifique como uma alternativa a | |
| 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 | |||
| CUPS | ~/.cups/ |
não vai corrigir | |
| darcs | |||
| dbus | Isso deve ser evitável com kdbus [citação necessária]. | ||
| Codificado aqui | |||
| Dia | |||
| dotnet-sdk | |||
| Eclipse | A opção 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 /usr/bin/eclipse) | ||
| 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 | |||
| Firefox | |||
| Flatpak | não vai corrigir | ||
| GHC | |||
| ghidra | |||
| GoldenDict | |||
~/.gramps/ |
|||
| gtk-recordMyDesktop | |||
| idris | |||
| iwd / iwctl | ~/.iwctl_history |
||
| Java OpenJDK | |||
| Java OpenJFX | |||
| julia | |||
| Linux PAM | Codificado em modules/pam_env/pam_env.c | ||
| lldb | |||
| mathomatic | O histórico pode ser movido usando com o ambiente definido apropriadamente. | ||
| Minecraft | ~/.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 --norc. | ||
| Nestopia UE | não vai corrigir | ||
| 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 | |||
~/.pcsxr |
Uma opção existe, mas só pode ser definido relativo a ~/.pcsxr. | ||
| perf | 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á | ||
~/.stardict/ |
A única solução alternativa é modificar | ||
| SeaMonkey | |||
~/.ssr/ |
O autor parece não concordar com esse recurso. | ||
| Solfege | |||
| spacemacs[link inativo 2020-08-06 ⓘ] | |||
| SpamAssassin | |||
| 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 | |||
| texinfo | |||
| TeXmacs | |||
| Thunderbird | |||
| tllocalmgr | |||
| vim | A partir de 7.3.1178, vem com suporte a se ~/.vimrc não for encontrado.
"$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 | ||
| vimperator | |||
| wpa_cli | |||
| xdg-utils | Por algum motivo o script codifica . Isso é usado por chromium entre outros. | ||
| 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 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.