https://wiki.archlinux.org/api.php?action=feedcontributions&user=Towo&feedformat=atomArchWiki - User contributions [en]2024-03-28T21:21:11ZUser contributionsMediaWiki 1.41.0https://wiki.archlinux.org/index.php?title=User:Towo&diff=576885User:Towo2019-07-05T22:42:03Z<p>Towo: Created page with "Dude from Cologne, Germany. Organizes FrOSCon."</p>
<hr />
<div>Dude from Cologne, Germany. Organizes [[DeveloperWiki:Linux_Conferences#FrOSCon|FrOSCon]].</div>Towohttps://wiki.archlinux.org/index.php?title=Electronic_identification&diff=576883Electronic identification2019-07-05T22:41:03Z<p>Towo: Explain usage with German Personalausweis.</p>
<hr />
<div>[[Category:Other hardware]]<br />
{{Related articles start}}<br />
{{Related|Common Access Card}}<br />
{{Related|Smartcards}}<br />
{{Related articles end}}<br />
{{Style|Some duplication with [[Smartcards]]}}<br />
An [[w:Electronic identification|electronic identification]] ("eID") is an electronic identification solution of citizens or organizations, for example in view to access benefits or services provided by government authorities, banks or other companies. Apart from online authentication many eICs also give users the option to sign electronic documents with a digital signature.<br />
<br />
== Installation ==<br />
<br />
All types of electronic identification '''require''' installing the {{Pkg|ccid}} package. After installation, [[enable]], and [[start]] {{ic|pcscd.socket}}.<br />
In addition, [https://www.acs.com.hk/en/product-lines/2/pc-linked-smart-card-readers/ ACS] smart cards also require the {{Pkg|acsccid}} package.<br />
<br />
{{Pkg|pcsc-tools}} contains {{ic|pcsc_scan}} program that can be used to check smart card detection [[Smartcards#Scan for card reader]].<br />
<br />
== Setup per country ==<br />
<br />
=== Belgium ===<br />
<br />
https://eid.belgium.be/en<br />
<br />
Install the {{AUR|eid-mw}} package. Before installation, import the (continuous build) keys from [https://files.eid.belgium.be/]. See [[makepkg#Signature checking]].<br />
<br />
There is no plugin for Chrome, but there is one for Firefox. Add the [https://addons.mozilla.org/nl/firefox/addon/belgium-eid Firefox plugin] to your browser. In recent versions, you'll need to manually [https://eid.belgium.be/en/log-eid#7507 add the eID module] to the Firefox security devices configuration. Your module path might be different than the one in the guide.<br />
List the different devices by doing:<br />
# p11tool --list-tokens<br />
Here you'll see the module, which might be beidpkcs11.so. <br />
Now to find the full path you do:<br />
# find /usr/lib -name beidpkcs11.so<br />
You should now be able to use your eID reader in Firefox. Try it out using the [https://iamapps.belgium.be/tma/?lang=en test page].<br />
<br />
You may find hints for troubleshooting in the [http://faq.eid.belgium.be/nl/index.html official documentation] but keep in mind that Arch Linux is not officially supported.<br />
<br />
=== Estonia ===<br />
<br />
See https://www.id.ee/?lang=en<br />
<br />
==== DigiDoc ====<br />
<br />
Once {{Pkg|ccid}} is installed and {{ic|pcscd.socket}} is [[start|started]], install {{AUR|qdigidoc4}}. One of the dependency {{AUR|xml-security-c}} is [[Makepkg#Signature_checking|verified with a signature]] that you have to import to your GnuPG keyring. Alternatively, the older version of this software (DigiDoc3) is also available with the packages {{AUR|qdigidoc}} and {{AUR|qesteidutil}}.<br />
<br />
DigiDoc4 has an optional [[GNOME/Files]] right click menu integration. Install {{AUR|python2-nautilus}} and restart Gnome Files using the command {{ic|pkill nautilus}}.<br />
<br />
{{Note| {{AUR|chrome-token-signing}} contains the "Token signing" extension that allows digital signatures on the web for both Google Chrome/Chromium and Firefox.}}<br />
<br />
==== Chromium ====<br />
<br />
After installing {{AUR|chrome-token-signing}}, enable the PIN 1 authentication in [[Google Chrome]] and [[Chromium]] by running the following command (taken from the [https://github.com/open-eid/linux-installer/blob/master/esteid-update-nssdb open-eid repo]).<br />
<br />
modutil -dbdir sql:$HOME/.pki/nssdb -add opensc-pkcs11 -libfile onepin-opensc-pkcs11.so -mechanisms FRIENDLY<br />
<br />
==== Firefox ====<br />
<br />
To enable PIN 1 authentication in [[Firefox]] you should install {{AUR|esteidpkcs11loader}} and {{AUR|chrome-token-signing}}. After restarting the browser make sure that "Firefox PKCS11 loader" extension is enabled. You can also follow manual instructions at [[Smartcards#Mozilla Firefox]].<br />
<br />
For {{AUR|firefox-esr52}} and other other Firefox forks you can use {{AUR|esteidfirefoxplugin}}.<br />
<br />
==== For new cards issued since December 2018 ====<br />
Install {{AUR|awp-blob}}. (Which installs awp from official deb package with blobs. No source currently exists:<br />
see discussion at [https://github.com/open-eid/linux-installer/issues/37]).<br />
<br />
In Firefox, enable "IDEMIA PKCS11 loader" extension after restart. For Chrome/Chromium, you could try <br />
modutil -force -dbdir sql:$HOME/.pki/nssdb -add idemia-pkcs11 -libfile /usr/local/AWP/lib/libOcsPKCS11Wrapper.so -mechanisms FRIENDLY<br />
<br />
=== Germany ===<br />
<br />
==== ReinerSCT devices ====<br />
<br />
Install {{AUR|pcsc-cyberjack}} and copy the default configuration file {{ic|/etc/pcsc-cyberjack/cyberjack.conf.default}} to the same folder, without default. Restart {{ic|pcsc.service}} and apps like {{AUR|ausweisapp2}} should recognize the scanner. The ReinerSCT RFID will blink its LED, which it does not when the driver is not installed correctly.<br />
<br />
=== Sweden ===<br />
<br />
[https://www.bankid.com/en/om-bankid/detta-ar-bankid BankID] is the leading electronic identification in Sweden.</div>Towohttps://wiki.archlinux.org/index.php?title=XDG_Base_Directory&diff=493979XDG Base Directory2017-10-24T12:36:00Z<p>Towo: /* Partial */ Warning hint about ICE.</p>
<hr />
<div>[[Category:Dotfiles]]<br />
[[ja:XDG Base Directory サポート]]<br />
{{Related articles start}}<br />
{{Related|dotfiles}}<br />
{{Related|Xdg user directories}}<br />
{{Related articles end}}<br />
This article exists to catalog the growing set of software using the [http://standards.freedesktop.org/basedir-spec/latest/ XDG Base Directory Specification] introduced in 2003. This is here to demonstrate the viability of this specification by listing commonly found dotfiles and their support status. For those not currently supporting the Base Directory Specification, workarounds will be demonstrated to emulate it instead.<br />
<br />
The workarounds will be limited to anything not involving patching the source, executing code stored in [[environment variable]]s or compile-time options. The rationale for this is that configurations should be portable across systems and having compile-time options prevent that.<br />
<br />
Hopefully this will provide a source of information about exactly what certain kinds of dotfiles are and where they come from.<br />
<br />
==XDG Base Directory specification==<br />
<br />
Please read the [http://standards.freedesktop.org/basedir-spec/latest/ full specification]. This section will attempt to break down the essence of what it tries to achieve.<br />
<br />
Only {{ic|XDG_RUNTIME_DIR}} is set by default through [http://www.freedesktop.org/software/systemd/man/pam_systemd.html pam_systemd]. It is up to the user to explicitly [[define]] the other variables, using absolute paths that point to existing directories.<br />
<br />
===User directories===<br />
<br />
* {{ic|XDG_CONFIG_HOME}}<br />
** Where user-specific configurations should be written (analogous to {{ic|/etc}}).<br />
** Should default to {{ic|$HOME/.config}}.<br />
<br />
* {{ic|XDG_CACHE_HOME}}<br />
** Where user-specific non-essential (cached) data should be written (analogous to {{ic|/var/cache}}).<br />
** Should default to {{ic|$HOME/.cache}}.<br />
<br />
* {{ic|XDG_DATA_HOME}}<br />
** Where user-specific data files should be written (analogous to {{ic|/usr/share}}).<br />
** Should default to {{ic|$HOME/.local/share}}.<br />
<br />
* {{ic|XDG_RUNTIME_DIR}}<br />
** Used for non-essential, user-specific data files such as sockets, named pipes, etc.<br />
** Not required to have a default value; warnings should be issued if not set or equivalents provided.<br />
** Must be owned by the user with an access mode of {{ic|0700}}.<br />
** Filesystem fully featured by standards of OS.<br />
** Must be on the local filesystem.<br />
** May be subject to periodic cleanup.<br />
** Modified every 6 hours or set sticky bit if persistence is desired.<br />
** Can only exist for the duration of the user's login.<br />
** Should not store large files as it may be mounted as a tmpfs.<br />
<br />
===System directories===<br />
<br />
* {{ic|XDG_DATA_DIRS}}<br />
** List of directories seperated by {{ic|:}} (analogous to {{ic|PATH}}).<br />
** Should default to {{ic|/usr/local/share:/usr/share}}.<br />
<br />
* {{ic|XDG_CONFIG_DIRS}}<br />
** List of directories seperated by {{ic|:}} (analogous to {{ic|PATH}}).<br />
** Should default to {{ic|/etc/xdg}}.<br />
<br />
==Contributing==<br />
<br />
When contributing make sure to use the correct section.<br />
<br />
Nothing should require code evaluation (such as [[vim]] and {{ic|VIMINIT}}), patches or compile-time options to gain support and anything which does must be deemed hardcoded. Additionally if the process is too error prone or difficult, such as [https://www.haskell.org/cabal/ Haskell's cabal] or eclipse, they should also be considered as hardcoded.<br />
<br />
* The first column should be the project name, ideally the command name if it is not ambigious, linked to their website or an appropriate internal wiki article.<br />
<br />
* The second column is for any legacy files and directories the project had (one per line), this is done so people can find them even if they are no longer read.<br />
<br />
* In the third, try to find the commit or version a project switched to XDG Base Directory or any open discussions and include them in the next two columns (two per line).<br />
<br />
* The last column should include any appropriate workarounds or solutions. Please verify that your solution is correct and functional.<br />
<br />
==Supported==<br />
<br />
{| class="wikitable sortable" style="width: 100%"<br />
! Application<br />
! Legacy Path<br />
! Supported Since<br />
! Discussion<br />
! Notes<br />
|-<br />
| [https://github.com/SirCmpwn/aerc aerc]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [https://github.com/Antimicro/antimicro/ antimicro]<br />
| {{ic|~/.antimicro}}<br />
| [https://github.com/Antimicro/antimicro/commit/edba864 edba864]<br />
| [https://github.com/Antimicro/antimicro/issues/5]<br />
|<br />
|-<br />
| [[aria2]]<br />
| {{ic|~/.aria2}}<br />
| [https://github.com/tatsuhiro-t/aria2/commit/8bc1d37 8bc1d37]<br />
| [https://github.com/tatsuhiro-t/aria2/issues/27]<br />
|<br />
|-<br />
| [[blender]]<br />
| {{ic|~/.blender}}<br />
| [http://git.blender.org/gitweb/gitweb.cgi/blender.git/commit/4293f473 4293f473]<br />
| [https://developer.blender.org/T28943]<br />
|<br />
|-<br />
| [https://github.com/falconindy/burp burp]<br />
|<br />
| [https://github.com/falconindy/burp/commit/f2388e9 f2388e9]<br />
|<br />
|<br />
|-<br />
| [[chromium]]<br />
| {{ic|~/.chromium}}<br />
| [https://src.chromium.org/viewvc/chrome?revision=23057&view=revision 23057]<br />
| [https://groups.google.com/forum/#!topic/chromium-dev/QekVQxF3nho] [https://code.google.com/p/chromium/issues/detail?id=16976]<br />
|<br />
|-<br />
| [http://citra-emu.org/ citra]<br />
| {{ic|~/.citra-emu}}<br />
| [https://github.com/citra-emu/citra/commit/f7c3193fec f7c3193fec]<br />
| [https://github.com/citra-emu/citra/pull/575]<br />
|<br />
|-<br />
| [[PHP#Composer|composer]]<br />
| {{ic|~/.composer}}<br />
| [https://github.com/composer/composer/releases/tag/1.0.0-beta1 1.0.0-beta1]<br />
| [https://github.com/composer/composer/pull/1407]<br />
|<br />
|-<br />
| [https://github.com/falconindy/cower cower]<br />
|<br />
| [https://github.com/falconindy/cower/commit/8b70805 8b70805]<br />
|<br />
|<br />
|-<br />
| [https://wiki.gnome.org/Apps/DFeet d-feet]<br />
| {{ic|~/.d-feet}}<br />
| [https://git.gnome.org/browse/d-feet/commit/?id==7f6104b 7f6104b]<br />
|<br />
|<br />
|-<br />
| [https://wiki.gnome.org/dconf dconf]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[Dolphin emulator|dolphin-emu]]<br />
| {{ic|~/.dolphin-emu}}<br />
| [https://github.com/dolphin-emu/dolphin/commit/a498c68 a498c68]<br />
| [https://github.com/dolphin-emu/dolphin/pull/2304]<br />
|<br />
|-<br />
| [http://dr14tmeter.sourceforge.net dr14-meter]<br />
| <br />
| [https://github.com/simon-r/dr14_t.meter/commit/7e777ca645298ec898b3c76e3ec472ed6ed43e8a 7e777ca64]<br />
| [https://github.com/simon-r/dr14_t.meter/pull/30]<br />
| Hardcoded {{ic|$HOME/.config/dr14meter}}<br />
|-<br />
| [http://www.knopwob.org/dunst/index.html dunst]<br />
|<br />
| [https://github.com/knopwob/dunst/commit/78b6e2b1 78b6e2b1]<br />
| [https://github.com/knopwob/dunst/issues/22]<br />
|<br />
|-<br />
| [[dwb]]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[fish]]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[fontconfig]]<br />
| {{ic|~/.fontconfig}}<br />
<br />
{{ic|~/.fonts}}<br />
| [http://cgit.freedesktop.org/fontconfig/commit/?id=8c255fb1 8c255fb1]<br />
|<br />
| Use {{ic|"$XDG_DATA_HOME"/fonts}} to store fonts instead.<br />
|-<br />
| [http://fontforge.github.io/ fontforge]<br />
| {{ic|~/.FontForge}}<br />
<br />
{{ic|~/.PfaEdit}}<br />
| [https://github.com/fontforge/fontforge/commit/e4c2cc7432 e4c2cc7432]<br />
| [https://github.com/fontforge/fontforge/issues/847] [https://github.com/fontforge/fontforge/issues/991]<br />
|<br />
|-<br />
| [http://www.freerdp.com/ freerdp]<br />
| {{ic|~/.freerdp}}<br />
| [https://github.com/FreeRDP/FreeRDP/commit/edf6e7258d edf6e7258d]<br />
|<br />
|<br />
|-<br />
| [https://projects.gnome.org/gconf gconf]<br />
| {{ic|~/.gconf}}<br />
| [https://git.gnome.org/browse/gconf/commit/?id=fc28caa7 fc28caa7]<br />
| [https://bugzilla.gnome.org/show_bug.cgi?id=674803]<br />
|<br />
|-<br />
| [[GIMP]]<br />
| {{ic|~/.gimp-x.y}}<br />
{{ic|~/.thumbnails}}<br />
| [https://git.gnome.org/browse/gimp/commit/?id=60e0cfe 60e0cfe] [https://git.gnome.org/browse/gimp/commit/?id=483505f 483505f]<br />
| [https://bugzilla.gnome.org/show_bug.cgi?id=166643] [https://bugzilla.gnome.org/show_bug.cgi?id=646644]<br />
|<br />
|-<br />
| [[git]]<br />
| {{ic|~/.gitconfig}}<br />
| [https://github.com/git/git/commit/0d94427e 0d94427e]<br />
|<br />
|<br />
|-<br />
| [http://gstreamer.freedesktop.org/ gstreamer]<br />
| {{ic|~/.gstreamer-0.10}}<br />
| [http://cgit.freedesktop.org/gstreamer/gstreamer/commit/?id=4e36f93924cf 4e36f93924cf]<br />
| [https://bugzilla.gnome.org/show_bug.cgi?id=518597]<br />
|<br />
|-<br />
| [[gtk|gtk3]]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [http://hisham.hm/htop/ htop]<br />
| {{ic|~/.htoprc}}<br />
| [https://github.com/hishamhm/htop/commit/93233a67 93233a67]<br />
|<br />
|<br />
|-<br />
| [[i3]]<br />
| {{ic|~/.i3}}<br />
| [http://code.stapelberg.de/git/i3/commit/?id=7c130fb54 7c130fb54]<br />
|<br />
|<br />
|-<br />
| [http://i3wm.org/i3status/ i3status]<br />
| {{ic|~/.i3status.conf}}<br />
| [http://code.stapelberg.de/git/i3status/commit/?id=c3f7fc4994 c3f7fc4994]<br />
|<br />
|<br />
|-<br />
| [http://www.imagemagick.org/script/index.php imagemagick]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[inkscape]]<br />
| {{ic|~/.inkscape}}<br />
| [http://wiki.inkscape.org/wiki/index.php/Release_notes/0.47#Preferences 0.47]<br />
| [https://bugs.launchpad.net/inkscape/+bug/199720]<br />
|<br />
|-<br />
| [https://www.ctan.org/pkg/latexmk?lang=en latexmk]<br />
| {{ic|~/.latexmkrc}}<br />
|<br />
|<br />
|<br />
|-<br />
| [http://lftp.yar.ru/ lftp]<br />
| {{ic|~/.lftp}}<br />
| [https://github.com/lavv17/lftp/commit/21dc400 21dc400]<br />
| [https://www.mail-archive.com/lftp@uniyar.ac.ru/msg04301.html]<br />
|<br />
|-<br />
| [https://github.com/Sude-/lgogdownloader/ lgogdownloader]<br />
| {{ic|~/.gogdownloader}}<br />
| [https://github.com/Sude-/lgogdownloader/commit/d430af63d000 d430af63d000]<br />
| [https://github.com/Sude-/lgogdownloader/issues/4]<br />
|<br />
|-<br />
| [[LibreOffice]]<br />
|<br />
| [https://cgit.freedesktop.org/libreoffice/ure/commit/?id=a6f56f70a4930d3f71bd9c9b90fdd0ba20e4da5f a6f56f70] [https://cgit.freedesktop.org/libreoffice/bootstrap/commit/?id=25bd2eec77ed774a37d1cddd0d72312e23d5e9fd 25bd2eec]<br />
| [https://bugs.documentfoundation.org/show_bug.cgi?id=32263]<br />
|<br />
|-<br />
| [[livestreamer]]<br />
| {{ic|~/.livestreamerrc}}<br />
| [https://github.com/chrippa/livestreamer/commit/ea805917 ea805917]<br />
| [https://github.com/chrippa/livestreamer/pull/106]<br />
|<br />
|-<br />
| [[llpp]]<br />
|<br />
| [http://repo.or.cz/w/llpp.git/commit/3ab86f0cb 3ab86f0cb]<br />
|<br />
| Currently llpp places the configuration directly under {{ic|XDG_CONFIG_HOME}} instead of creating a directory.<br />
|-<br />
| [[mc]]<br />
| {{ic|~/.mc}}<br />
| [https://www.midnight-commander.org/changeset/1b9957058 1b9957058] [https://www.midnight-commander.org/changeset/0b7115647 0b7115647]<br />
<br />
[https://www.midnight-commander.org/changeset/ce401d797 ce401d797]<br />
| [https://www.midnight-commander.org/ticket/1851]<br />
|<br />
|-<br />
| [[Mercurial]]<br />
| {{ic|~/.hgrc}}<br />
| [https://www.mercurial-scm.org/repo/hg/rev/354020079723 354020079723] [https://www.mercurial-scm.org/wiki/Release4.2 4.2]<br />
|<br />
| {{ic|XDG_CONFIG_HOME/hg/hgrc}}.<br />
|-<br />
| [https://www.mesa3d.org/ mesa]<br />
|<br />
| [https://cgit.freedesktop.org/mesa/mesa/commit/?id=87ab26b2ab35a29d446ae66f1795d40c184c0739 87ab26b2ab]<br />
|<br />
| {{ic|XDG_CACHE_HOME/mesa}}<br />
|-<br />
| [http://milkytracker.org/ milkytracker]<br />
| {{ic|~/.milkytracker_config}}<br />
| [https://github.com/Deltafire/MilkyTracker/commit/eb487c55 eb487c55]<br />
| [https://github.com/Deltafire/MilkyTracker/issues/12]<br />
|<br />
|-<br />
| [https://github.com/mintty/mintty mintty]<br />
| {{ic|~/.minttyrc}}<br />
| [https://github.com/mintty/mintty/commit/cff1bd8f cff1bd8f] v2.3.7.<br />
| [https://github.com/mintty/mintty/issues/525]<br />
|-<br />
| [[mpd]]<br />
| {{ic|~/.mpdconf}}<br />
| [http://git.musicpd.org/cgit/master/mpd.git/commit/?id=87b73284 87b73284]<br />
|<br />
|<br />
|-<br />
| [[mpv]]<br />
| {{ic|~/.mpv}}<br />
| [https://github.com/mpv-player/mpv/commit/cb250d490 cb250d490]<br />
| [https://github.com/mpv-player/mpv/pull/864]<br />
|<br />
|-<br />
| [[mutt]]<br />
| {{ic|~/.mutt}}<br />
| [https://dev.mutt.org/trac/changeset/42fee7585f 42fee7585f]<br />
| [http://dev.mutt.org/trac/ticket/3207]<br />
|<br />
|-<br />
| [http://mypaint.intilinux.com/ mypaint]<br />
| {{ic|~/.mypaint}}<br />
| [https://github.com/mypaint/mypaint/commit/cf723b74cd cf723b74cd]<br />
|<br />
|<br />
|-<br />
| [[ncmpcpp]]<br />
| {{ic|~/.ncmpcpp}}<br />
| [https://github.com/arybczak/ncmpcpp/commit/38d9f811de888e512b0115f551a9679eab4607f9 38d9f811] [https://github.com/arybczak/ncmpcpp/commit/27cd86e0638bba3a7a78e44ac40dc98a58d1d90d 27cd86e0]<br />
| [https://github.com/arybczak/ncmpcpp/issues/79] [https://github.com/arybczak/ncmpcpp/issues/110]<br />
| {{ic|ncmpcpp_directory}} should be set to avoid an {{ic|error.log}} file in {{ic|~/.ncmpcpp}}.<br />
|-<br />
| [[neovim]]<br />
| {{ic|~/.nvim}}<br />
<br />
{{ic|~/.nvimlog}}<br />
<br />
{{ic|~/.nviminfo}}<br />
| [https://github.com/neovim/neovim/commit/1ca5646bb 1ca5646bb]<br />
| [https://github.com/neovim/neovim/issues/78] [https://github.com/neovim/neovim/pull/3198]<br />
|<br />
|-<br />
| [[newsbeuter]]<br />
| {{ic|~/.newsbeuter}}<br />
| [https://github.com/akrennmair/newsbeuter/commit/3c57824c5 3c57824c5]<br />
| [https://github.com/akrennmair/newsbeuter/pull/39]<br />
| It is required to create both directories [http://newsbeuter.org/doc/newsbeuter.html#_xdg_base_directory_support]:<br />
<br />
{{ic|1=$ mkdir -p "$XDG_DATA_HOME"/newsbeuter "$XDG_CONFIG_HOME"/newsbeuter}}<br />
|-<br />
| [[OfflineIMAP]]<br />
| {{ic|~/.offlineimaprc}}<br />
| [https://github.com/OfflineIMAP/offlineimap/commit/5150de5 5150de5]<br />
| [https://github.com/OfflineIMAP/offlineimap/issues/32]<br />
|<br />
|-<br />
| [https://bitbucket.org/opentyrian/opentyrian/wiki/Home opentyrian]<br />
| {{ic|~/.opentyrian}}<br />
| [https://bitbucket.org/opentyrian/opentyrian/commits/8d45ff2 8d45ff2]<br />
| [https://web.archive.org/web/20140815181350/http://code.google.com/p/opentyrian/issues/detail?id=125]<br />
|<br />
|-<br />
| [http://pcsx2.net/ pcsx2]<br />
| {{ic|~/.pcsx2}}<br />
| [https://github.com/PCSX2/pcsx2/commit/87f1e8f77 87f1e8f77] [https://github.com/PCSX2/pcsx2/commit/a9020c606 a9020c606]<br />
<br />
[https://github.com/PCSX2/pcsx2/commit/3b22f0fb0 3b22f0fb0] [https://github.com/PCSX2/pcsx2/commit/0a012aec2 0a012aec2]<br />
| [https://github.com/PCSX2/pcsx2/issues/352] [https://github.com/PCSX2/pcsx2/issues/381]<br />
|<br />
|-<br />
| [https://pip.pypa.io/ pip]<br />
| {{ic|~/.pip}}<br />
| [https://github.com/pypa/pip/blob/548a9136525815dff41acd845c558a0b36eb1c5f/NEWS.rst#60-2014-12-22 6.0]<br />
| [https://github.com/pypa/pip/issues/1733]<br />
|<br />
|-<br />
| [http://www.ppsspp.org/ ppsspp]<br />
| {{ic|~/.ppsspp}}<br />
| [https://github.com/hrydgard/ppsspp/commit/132fe47c7d 132fe47c7d]<br />
| [https://github.com/hrydgard/ppsspp/issues/4623]<br />
|<br />
|-<br />
| {{pkg|procps-ng}}<br />
| {{ic|~/.toprc}}<br />
| [https://gitlab.com/procps-ng/procps/commit/af53e170b9 af53e170b9]<br />
| [https://gitlab.com/procps-ng/procps/merge_requests/38] [https://bugzilla.redhat.com/show_bug.cgi?id=1155265]<br />
|<br />
|-<br />
| [https://github.com/Cloudef/orbment/ orbment]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[pacman]]<br />
| {{ic|~/.makepkg.conf}}<br />
| [https://projects.archlinux.org/pacman.git/commit/?id=80eca94c8 80eca94c8]<br />
| [https://mailman.archlinux.org/pipermail/pacman-dev/2014-July/019178.html]<br />
|<br />
|-<br />
| [https://github.com/panda3d/panda3d Panda3D]<br />
| {{ic|~/.panda3d}}<br />
| [https://github.com/panda3d/panda3d/commit/2b537d2 2b537d2]<br />
|<br />
|<br />
|-<br />
| [[PulseAudio]]<br />
| {{ic|~/.pulse}}<br />
<br />
{{ic|~/.pulse-cookie}}<br />
| [http://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=59a8618dcd9 59a8618dcd9] [http://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=87ae8307057 87ae8307057]<br />
<br />
[http://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=9ab510a6921 9ab510a6921] [http://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=4c195bcc9d5 4c195bcc9d5]<br />
| [https://bugzilla.redhat.com/show_bug.cgi?id=845607]<br />
|<br />
|-<br />
| [http://pyroom.org/index.html pyroom]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[qutebrowser]]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[qtile]]<br />
|<br />
| [https://github.com/qtile/qtile/commit/fd8686e5b4e4fa20bb82039ed8a83768434585ec fd8686e] [https://github.com/qtile/qtile/commit/66d704bce83f631b3326f10a1bc9fc22f8e6a6fd 66d704b]<br />
<br />
[https://github.com/qtile/qtile/commit/51cff019917b87bda696b381493f969ceb6cc350 51cff01]<br />
| [https://github.com/qtile/qtile/pull/835]<br />
| Some optional bar widgets can create files and directories in non-compliant paths, but most often these are still configurable.<br />
|-<br />
| {{Pkg|rclone}}<br />
| {{ic|~/.rclone.conf}}<br />
| [https://github.com/ncw/rclone/commit/9d362589 9d362589]<br />
| [https://github.com/ncw/rclone/issues/868]<br />
|<br />
|-<br />
| [http://www.libretro.com/ retroarch]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [http://rr-project.org/ rr]<br />
| {{ic|~/.rr}}<br />
| [https://github.com/mozilla/rr/commit/02e7d41e 02e7d41e]<br />
| [https://github.com/mozilla/rr/issues/1455]<br />
|<br />
|-<br />
| [http://www.snes9x.com/ Snes9x]<br />
| {{ic|~/.snes9x}}<br />
| [https://github.com/snes9xgit/snes9x/commit/93b5f11641fa22d4518f251d6e3db99219864677 19864677]<br />
| [https://github.com/snes9xgit/snes9x/issues/194]<br />
| By default configuration is blank, is intended that the user fill it at they will (throw the gui or manually) before launch a rom<br />
|-<br />
| {{AUR|sublime-text-dev}}<br />
|<br />
|<br />
|<br />
| Cache is placed in {{ic|$XDG_CONFIG_HOME/sublime-text-3/Cache}} instead of expected {{ic|$XDG_CACHE_HOME/sublime-text-3}}.<br />
|-<br />
| [[surfraw]]<br />
| {{ic|~/.surfraw.conf}}<br />
<br />
{{ic|~/.surfraw.bookmarks}}<br />
| [http://anonscm.debian.org/cgit/surfraw/surfraw.git/commit/?id=3e4591d8 3e4591d8] [http://anonscm.debian.org/cgit/surfraw/surfraw.git/commit/?id=bd8c427d bd8c427d]<br />
<br />
[http://anonscm.debian.org/cgit/surfraw/surfraw.git/commit/?id=f57fc718 f57fc718]<br />
|<br />
|<br />
|-<br />
| [[sway]]<br />
| {{ic|~/.sway/config}}<br />
| [https://github.com/SirCmpwn/sway/commit/614393c09 614393c09]<br />
| [https://github.com/SirCmpwn/sway/issues/5]<br />
|<br />
|-<br />
| [[systemd]]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[termite]]<br />
|<br />
|-<br />
| [https://github.com/tmuxinator/tmuxinator tmuxinator]<br />
| {{ic|~/.tmuxinator}}<br />
| [https://github.com/tmuxinator/tmuxinator/pull/511/commits/263692349f1142c0edcacfbefae541cbc0e7b44e 2636923]<br />
| [https://github.com/tmuxinator/tmuxinator/pull/511]<br />
<br />
|<br />
|-<br />
| [[transmission]]<br />
| {{ic|~/.transmission}}<br />
| [https://trac.transmissionbt.com/changeset/5517 5517]<br />
| [https://trac.transmissionbt.com/ticket/684]<br />
|<br />
|-<br />
| [https://www.kernel.org/pub/linux/utils/util-linux/ util-linux]<br />
|<br />
| [http://git.kernel.org/cgit/utils/util-linux/util-linux.git/commit/?id=570b32100 570b32100]<br />
|<br />
|<br />
|-<br />
| [[uzbl]]<br />
|<br />
| [https://github.com/uzbl/uzbl/commit/c6fd63a c6fd63a]<br />
| [https://github.com/uzbl/uzbl/pull/150]<br />
|<br />
|-<br />
| [http://fanglingsu.github.io/vimb/ vimb]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[VirtualBox]]<br />
| {{ic|~/.VirtualBox}}<br />
| [https://www.virtualbox.org/ticket/5099?action=diff&version=7 4.3]<br />
| [https://www.virtualbox.org/ticket/5099]<br />
|<br />
|-<br />
| [http://martanne.github.io/vis/ vis]<br />
| {{ic|~/.vis}}<br />
| [https://github.com/martanne/vis/pull/303]<br />
| [https://github.com/martanne/vis/commit/68a25c751c0219ef5df589a19513e46a08965d5a 68a25c75]<br />
[https://github.com/martanne/vis/commit/d138908cf8149eb10120957271cd6979272b4730 d138908c]<br />
|<br />
|-<br />
| [[VLC media player]]<br />
| {{ic|~/.vlcrc}}<br />
| [http://git.videolan.org/?p=vlc.git;a=commit;h=16f32e1500887c0dcd33cb06ad71759a81a52878 16f32e15]<br />
| [https://trac.videolan.org/vlc/ticket/1267]<br />
|<br />
|-<br />
| [https://www.warsow.gg/ warsow]<br />
| {{ic|~/.warsow-2.x}}<br />
| [https://github.com/Qfusion/qfusion/commit/98ece3f 98ece3f]<br />
| [https://github.com/Qfusion/qfusion/issues/298]<br />
|<br />
|-<br />
| [[wireshark]]<br />
| {{ic|~/.wireshark}}<br />
| [https://code.wireshark.org/review/gitweb?p=wireshark.git;a=commit;h=b0b53fa5937aa7ba258427ca0f3581dba725230d b0b53fa5]<br />
|<br />
|<br />
|-<br />
| [https://github.com/derat/xsettingsd xsettingsd]<br />
| {{ic|~/.xsettingsd}}<br />
| [https://github.com/derat/xsettingsd/commit/b4999f5e9e99224caf97d09f25ee731774ecd7be 4ecd7be]<br />
|<br />
|<br />
|-<br />
| [[xmonad]]<br />
| {{ic|~/.xmonad}}<br />
| [https://github.com/xmonad/xmonad/commit/40fc10b6a5682ce1d6ba7f0679962926ef6cfade 40fc10b6]<br />
| [https://github.com/xmonad/xmonad/issues/61] [https://code.google.com/p/xmonad/issues/detail?id=484]<br />
| Alternatively the environments {{ic|XMONAD_CONFIG_HOME}}, {{ic|XMONAD_DATA_HOME}}, and {{ic|XMONAD_CACHE_HOME}} are also available.<br />
|-<br />
| [http://www.vergenet.net/~conrad/software/xsel/ xsel]<br />
| {{ic|~/.xsel.log}}<br />
| [https://github.com/kfish/xsel/commit/ee7b48111be2e2117b201962e9d1c0e1f9804ed4 ee7b4811]<br />
| [https://github.com/kfish/xsel/issues/10]<br />
|<br />
|}<br />
<br />
==Partial==<br />
{| class="wikitable sortable" style="width: 100%"<br />
! Application<br />
! Legacy Path<br />
! Supported Since<br />
! Discussion<br />
! Notes<br />
|-<br />
| [http://abook.sourceforge.net/ abook]<br />
| {{ic|~/.abook}}<br />
|<br />
|<br />
| {{ic|1=$ abook --config "$XDG_CONFIG_HOME"/abook/abookrc \<br />
--datafile "$XDG_CACHE_HOME"/abook/addressbook}}<br />
|-<br />
| [[Anki]]<br />
| {{ic|~/Anki}}<br />
<br />
{{ic|~/Documents/Anki}}<br />
|<br />
| [https://github.com/dae/anki/pull/49] [https://github.com/dae/anki/pull/58]<br />
| {{ic|1=$ anki -b "$XDG_DATA_HOME"/Anki}}<br />
|-<br />
| [[aspell]]<br />
| {{ic|~/.aspell.conf}}<br />
|<br />
|<br />
|<br />
|-<br />
| [[Atom]]<br />
| {{ic|~/.atom}}<br />
|<br />
| [https://github.com/atom/atom/issues/8281]<br />
| {{ic|1=$ export ATOM_HOME="$XDG_DATA_HOME"/atom}}<br />
|-<br />
| [http://crates.io/ cargo]<br />
| {{ic|~/.cargo}}<br />
|<br />
| [https://github.com/rust-lang/cargo/pull/148] [https://github.com/rust-lang/cargo/issues/1734] [https://github.com/rust-lang/rfcs/pull/1615]<br />
| {{ic|1=$ export CARGO_HOME="$XDG_DATA_HOME"/cargo}}<br />
|-<br />
| [[ccache]]<br />
| {{ic|~/.ccache}}<br />
|<br />
|<br />
| {{ic|1=$ export CCACHE_DIR="$XDG_CACHE_HOME"/ccache}}<br />
|-<br />
| [https://github.com/cisco/ChezScheme ChezScheme]<br />
| {{ic|~/.chezscheme_history}}<br />
|<br />
|<br />
| {{ic|1=$ petite --eehistory "$XDG_DATA_HOME"/chezscheme/history}}<br />
|-<br />
| [[conky]]<br />
| {{ic|~/.conkyrc}}<br />
| [https://github.com/brndnmtthws/conky/commit/00481ee9a97025e8e2acd7303d080af1948f7980 00481ee]<br />
| [https://github.com/brndnmtthws/conky/issues/144]<br />
| {{ic|1=$ conky --config="$XDG_CONFIG_HOME"/conky/conkyrc}}<br />
|-<br />
| [[coreutils]]<br />
| {{ic|~/.dircolors}}<br />
|<br />
|<br />
| {{ic|1=$ source "$(dircolors "$XDG_CONFIG_HOME"/dircolors)"}}<br />
|-<br />
| [http://www.dungeoncrawl.org/ crawl]<br />
| {{ic|~/.crawl}}<br />
|<br />
|<br />
| The trailing slash is required:<br />
<br />
{{ic|1=$ export CRAWL_DIR="$XDG_DATA_HOME"/crawl/}}<br />
|-<br />
| [[dict]]<br />
| {{ic|~/.dictrc}}<br />
|<br />
|<br />
| {{ic|1=$ dict -c "$XDG_CONFIG_HOME"/dict/dictrc}}<br />
|-<br />
| [[ELinks]]<br />
| {{ic|~/.elinks}}<br />
|<br />
|<br />
| {{ic|1=$ export ELINKS_CONFDIR="$XDG_CONFIG_HOME"/elinks}}<br />
|-<br />
| [http://kripken.github.io/emscripten-site/ emscripten]<br />
| {{ic|~/.emscripten}}<br />
<br />
{{ic|~/.emscripten_sanity}}<br />
<br />
{{ic|~/.emscripten_ports}}<br />
<br />
{{ic|~/.emscripten_cache__last_clear}}<br />
|<br />
| [https://github.com/kripken/emscripten/issues/3624 3624]<br />
| {{ic|1=$ export EM_CONFIG="$XDG_CONFIG_HOME"/emscripten/config}}<br />
<br />
{{ic|1=$ export EM_CACHE="$XDG_CACHE_HOME"/emscripten/cache}}<br />
<br />
{{ic|1=$ export EM_PORTS="$XDG_DATA_HOME"/emscripten/cache}}<br />
<br />
{{ic|1=$ emcc --em-config "$XDG_CONFIG_HOME"/emscripten/config \<br />
--em-cache "$XDG_CACHE_HOME"/emscripten/cache}}<br />
|-<br />
| [http://www.gnu.org/software/gdb/ gdb]<br />
| {{ic|~/.gdbinit}}<br />
|<br />
|<br />
| {{ic|1=$ gdb -nh -x "$XDG_CONFIG_HOME"/gdb/init}}<br />
|-<br />
| [https://github.com/get-iplayer/get_iplayer get_iplayer]<br />
| {{ic|~/.get_iplayer}}<br />
|<br />
|<br />
| {{ic|1=$ export GETIPLAYERUSERPREFS="$XDG_DATA_HOME"/get_iplayer}}<br />
|-<br />
| [http://guichaz.free.fr/gliv/ gliv]<br />
| {{ic|~/.glivrc}}<br />
|<br />
|<br />
| {{ic|1=$ gliv --glivrc="$XDG_CONFIG_HOME"/gliv/glivrc}}<br />
|-<br />
| [[GnuPG]]<br />
| {{ic|~/.gnupg}}<br />
|<br />
| [https://bugs.gnupg.org/gnupg/issue1456] [https://bugs.gnupg.org/gnupg/issue1018]<br />
| {{ic|1=$ export GNUPGHOME="$XDG_CONFIG_HOME"/gnupg}}<br />
<br />
{{ic|1=$ gpg2 --homedir "$XDG_CONFIG_HOME"/gnupg}}<br />
|-<br />
| [[Google Earth]]<br />
| {{ic|~/.googleearth}}<br />
|<br />
|<br />
| Some paths can be changed with the {{ic|KMLPath}} and {{ic|CachePath}} options in {{ic|~/.config/Google/GoogleEarthPlus.conf}}<br />
|-<br />
| [https://sourceforge.net/projects/gqclient GQ LDAP client]<br />
| {{ic|~/.gq}}<br />
{{ic|~/.gq-state}}<br />
| [https://sourceforge.net/p/gqclient/mailman/message/2053978 1.51]<br />
|<br />
| {{ic|1=$ export GQRC="$XDG_CONFIG_HOME"/gqrc}}<br />
<br />
{{ic|1=$ export GQSTATE="$XDG_DATA_HOME"/gq/gq-state}}<br />
<br />
{{ic|1=$ mkdir -p "$(dirname "$GQSTATE")"}}<br />
|-<br />
| [https://gradle.org/ gradle]<br />
| {{ic|~/.gradle}}<br />
|<br />
| [https://discuss.gradle.org/t/be-a-nice-freedesktop-citizen-move-the-gradle-to-the-appropriate-location-in-linux/2199]<br />
| {{ic|1=$ export GRADLE_USER_HOME="$XDG_DATA_HOME"/gradle}}<br />
|-<br />
| [[gtk]]<br />
| {{ic|~/.gtkrc}}<br />
|<br />
|<br />
| {{ic|1=$ export GTK_RC_FILES="$XDG_CONFIG_HOME"/gtk-1.0/gtkrc}}<br />
|-<br />
| [[gtk|gtk2]]<br />
| {{ic|~/.gtkrc-2.0}}<br />
|<br />
|<br />
| {{ic|1=$ export GTK2_RC_FILES="$XDG_CONFIG_HOME"/gtk-2.0/gtkrc}}<br />
|-<br />
| [http://httpie.org httpie]<br />
| {{ic|~/.httpie}}<br />
|<br />
| [https://github.com/jakubroztocil/httpie/issues/145]<br />
| {{ic|1=$ export HTTPIE_CONFIG_DIR="$XDG_CONFIG_HOME"/httpie}}<br />
|-<br />
| [http://ipython.org ipython]/[[jupyter]]<br />
| {{ic|~/.ipython}}<br />
|<br />
|<br />
| {{ic|1=$ export IPYTHONDIR="$XDG_CONFIG_HOME"/jupyter}}<br />
<br />
{{ic|1=$ export JUPYTER_CONFIG_DIR="$XDG_CONFIG_HOME"/jupyter}}<br />
|-<br />
| [[irssi]]<br />
| {{ic|~/.irssi}}<br />
|<br />
| [https://github.com/irssi/irssi/pull/511]<br />
| {{ic|1=$ irssi --config="$XDG_CONFIG_HOME"/irssi/config \<br />
--home="$XDG_DATA_HOME"/irssi}}<br />
|-<br />
| [[isync]]<br />
| {{ic|~/.mbsyncrc}}<br />
|<br />
|<br />
| {{ic|1=$ mbsync -c "$XDG_CONFIG_HOME"/isync/mbsyncrc}}<br />
|-<br />
| [[core utilities#less|less]]<br />
| {{ic|~/.lesshst}}<br />
|<br />
|<br />
| {{ic|1=$ mkdir -p "$XDG_CACHE_HOME"/less}}<br />
<br />
{{ic|1=$ export LESSHISTFILE="$XDG_CACHE_HOME"/less/history}}<br />
<br />
{{ic|1=$ export LESSHISTFILE=-}} can be used to disable this feature.<br />
<br />
{{ic|1=$ export LESSKEY="$XDG_CONFIG_HOME"/less/lesskey}}<br />
|-<br />
| [http://www.videolan.org/developers/libdvdcss.html libdvdcss]<br />
| {{ic|~/.dvdcss}}<br />
|<br />
| [https://mailman.videolan.org/pipermail/libdvdcss-devel/2014-August/001022.html]<br />
| {{ic|1=$ export DVDCSS_CACHE="$XDG_DATA_HOME"/dvdcss}}<br />
|-<br />
| [https://www.x.org/releases/current/doc/libICE/ice.html libice]<br />
| {{ic|~/.ICEauthority}}<br />
|<br />
| [https://bugs.freedesktop.org/show_bug.cgi?id=49173]<br />
| {{ic|1=$ export ICEAUTHORITY="$XDG_RUNTIME_DIR"/ICEauthority}}<br />
Be wary setting this too restrictively, e.g. {{pkg|gdm}} needs access to a user's {{ic|ICEauthority}} file.<br />
|-<br />
| [[Xorg|libx11]]<br />
| {{ic|~/.XCompose}}<br />
|<br />
|<br />
| {{ic|1=$ export XCOMPOSEFILE="$XDG_CONFIG_HOME"/X11/xcompose}}<br />
|-<br />
| [http://ltrace.org/ ltrace]<br />
| {{ic|~/.ltrace.conf}}<br />
|<br />
|<br />
| {{ic|1=$ ltrace -F "$XDG_CONFIG_HOME"/ltrace/ltrace.conf}}<br />
|-<br />
| {{pkg|maven}}<br />
| {{ic|~/.m2}}<br />
|<br />
|<br />
| {{ic|1=$ mvn -gs "$XDG_CONFIG_HOME"/maven/settings.xml}}<br />
{{hc|[http://maven.apache.org/settings.html settings.xml]|<nowiki><settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"<br />
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<br />
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0<br />
https://maven.apache.org/xsd/settings-1.0.0.xsd"><br />
...<br />
<localRepository>${env.XDG_CACHE_HOME}/maven/repository</localRepository><br />
...<br />
</settings></nowiki>}}<br />
|-<br />
| [[Mathematica]]<br />
| {{ic|~/.Mathematica}}<br />
|<br />
|<br />
| {{ic|1=$ export MATHEMATICA_USERBASE="$XDG_CONFIG_HOME"/mathematica}}<br />
|-<br />
| [http://mednafen.sourceforge.net/ mednafen]<br />
| {{ic|~/.mednafen}}<br />
|<br />
|<br />
| {{ic|1=$ export MEDNAFEN_HOME="$XDG_CONFIG_HOME"/mednafen}}<br />
|-<br />
| [[moc]]<br />
| {{ic|~/.moc}}<br />
|<br />
|<br />
| {{ic|1=$ mocp -M "$XDG_CONFIG_HOME"/moc}}<br />
<br />
{{ic|1=$ mocp -O MOCDir="$XDG_CONFIG_HOME"/moc}}<br />
|-<br />
| [[MPlayer]]<br />
| {{ic|~/.mplayer}}<br />
|<br />
|<br />
| {{ic|1=$ export MPLAYER_HOME="$XDG_CONFIG_HOME"/mplayer}}<br />
|-<br />
| [[msmtp]]<br />
| {{ic|~/.msmtprc}}<br />
|<br />
|<br />
| {{ic|1=$ msmtp -C "$XDG_CONFIG_HOME"/msmtp/msmtprc}}<br />
|-<br />
| {{pkg|ncurses}}<br />
| {{ic|~/.terminfo}}<br />
|<br />
|<br />
| Precludes system path searching:<br />
<br />
{{ic|1=$ export TERMINFO="$XDG_DATA_HOME"/terminfo}}<br />
<br />
{{ic|1=$ export TERMINFO_DIRS="$XDG_DATA_HOME"/terminfo:/usr/share/terminfo}}<br />
|-<br />
| [http://www.musicpd.org/clients/ncmpc/ ncmpc]<br />
| {{ic|~/.ncmpc}}<br />
|<br />
|<br />
| {{ic|ncmpc -f "$XDG_CONFIG_HOME"/ncmpc/config}}<br />
|-<br />
| [[Netbeans]]<br />
| {{ic|~/.netbeans}}<br />
|<br />
| [https://netbeans.org/bugzilla/show_bug.cgi?id=215961]<br />
| {{ic|1=$ netbeans --userdir "${XDG_CONFIG_HOME}"/netbeans}}<br />
|-<br />
| [[Node.js]]<br />
| {{ic|~/.node_repl_history}}<br />
|<br />
|<br />
| {{ic|1=$ export NODE_REPL_HISTORY="$XDG_DATA_HOME"/node_repl_history}} [https://nodejs.org/api/repl.html#repl_environment_variable_options]<br />
|-<br />
| [[notmuch]]<br />
| {{ic|~/.notmuch-config}}<br />
|<br />
| [http://notmuchmail.org/pipermail/notmuch/2011/007007.html]<br />
| {{ic|1=$ export NOTMUCH_CONFIG="$XDG_CONFIG_HOME"/notmuch/notmuchrc}}<br />
<br />
{{ic|1=$ export NMBGIT="$XDG_DATA_HOME"/notmuch/nmbug}}<br />
|-<br />
| {{pkg|npm}}<br />
| {{ic|~/.npm}}<br />
<br />
{{ic|~/.npmrc}}<br />
|<br />
| [https://github.com/npm/npm/issues/6675]<br />
| {{ic|1=$ export NPM_CONFIG_USERCONFIG=$XDG_CONFIG_HOME/npm/npmrc}}<br />
{{hc|npmrc|<nowiki><br />
prefix=${XDG_DATA_HOME}/npm<br />
cache=${XDG_CACHE_HOME}/npm<br />
tmp=${XDG_RUNTIME_DIR}/npm<br />
init-module=${XDG_CONFIG_HOME}/npm/config/npm-init.js<br />
</nowiki>}}<br />
{{ic|prefix}} is unnecessary (and unsupported) if Node.js is installed by {{AUR|nvm}}.<br />
|-<br />
| [[NVIDIA]], [[CUDA]]<br />
| {{ic|~/.nv}}<br />
|<br />
|<br />
| {{ic|1=$ export __GL_SHADER_DISK_CACHE_PATH="$XDG_CACHE_HOME"/nv}}<br />
<br />
{{ic|1=$ export CUDA_CACHE_PATH="$XDG_CACHE_HOME"/nv}}<br />
|-<br />
| [https://github.com/NVIDIA/nvidia-settings nvidia-settings]<br />
| {{ic|~/.nvidia-settings-rc}}<br />
|<br />
|<br />
| {{ic|1=$ nvidia-settings --config="$XDG_CONFIG_HOME"/nvidia/settings}}<br />
|-<br />
| {{AUR|nvm}}<br />
| {{ic|~/.nvm}}<br />
|<br />
|<br />
| {{ic|1=$ export NVM_DIR="$XDG_DATA_HOME"/nvm}}<br />
|-<br />
| [http://www.openscad.org/ openscad]<br />
| {{ic|~/.OpenSCAD}}<br />
| [https://github.com/openscad/openscad/commit/7c3077b0f 7c3077b0f]<br />
| [https://github.com/openscad/openscad/issues/125]<br />
| Does not fully honour XDG Base Directory Specification, see [https://github.com/openscad/openscad/issues/373]<br />
<br />
Currently it [https://github.com/openscad/openscad/blob/master/src/PlatformUtils-posix.cc#L20 hard-codes] {{ic|~/.local/share}}.<br />
|-<br />
| [[OpenSSL]]<br />
| {{ic|~/.rnd}}<br />
|<br />
|<br />
| Seeding file .rnd's location can be set with RANDFILE environment variable per [https://www.openssl.org/docs/faq.html FAQ].<br />
|-<br />
| {{pkg|pass}}<br />
| {{ic|~/.password-store}}<br />
|<br />
|<br />
| {{ic|1=$ export PASSWORD_STORE_DIR="$XDG_DATA_HOME"/pass}}<br />
|-<br />
| {{pkg|pidgin}}<br />
| {{ic|~/.purple}}<br />
|<br />
|<br />
| {{ic|1=$ pidgin --config="$XDG_DATA_HOME"/purple}}<br />
|-<br />
| [https://www.postgresql.org/ postgresql]<br />
| {{ic|~/.psqlrc}}<br />
{{ic|~/.psql_history}}<br />
<br />
{{ic|~/.pgpass}}<br />
<br />
{{ic|~/.pg_service.conf}}<br />
| 9.2<br />
| [https://www.postgresql.org/docs/current/static/app-psql.html]<br />
<br />
[https://www.postgresql.org/docs/current/static/libpq-envars.html]<br />
| {{ic|1=$ export PSQLRC="$XDG_CONFIG_HOME/pg/psqlrc"}}<br />
{{ic|1=$ export PSQL_HISTORY="$XDG_CACHE_HOME/pg/psql_history"}}<br />
<br />
{{ic|1=$ export PGPASSFILE="$XDG_CONFIG_HOME/pg/pgpass"}}<br />
<br />
{{ic|1=$ export PGSERVICEFILE="$XDG_CONFIG_HOME/pg/pg_service.conf"}}<br />
<br />
It is required to create both directories {{ic|1=$ mkdir "$XDG_CONFIG_HOME/pg" && mkdir "$XDG_CACHE_HOME/pg"}}<br />
|-<br />
| [[PulseAudio]]<br />
| {{ic|~/.esd_auth}}<br />
|<br />
|<br />
| Very likely generated by the {{ic|module-esound-protocol-unix.so}} module. It can be configured to use a different location but it makes much more sense to just comment out this module in {{ic|/etc/pulse/default.pa}} or {{ic|"$XDG_CONFIG_HOME"/pulse/default.pa}}.<br />
|-<br />
| [https://pypi.python.org/pypi/setuptools python-setuptools]<br />
| {{ic|~/.python-eggs}}<br />
|<br />
|<br />
| {{ic|1=$ export PYTHON_EGG_CACHE="$XDG_CACHE_HOME"/python-eggs}}<br />
|-<br />
| [[readline]]<br />
| {{ic|~/.inputrc}}<br />
|<br />
|<br />
| {{ic|1=$ export INPUTRC="$XDG_CONFIG_HOME"/readline/inputrc}}<br />
|-<br />
| [http://utopia.knoware.nl/~hlub/uck/rlwrap/ rlwrap]<br />
| {{ic|~/.*_history}}<br />
|<br />
| [https://github.com/hanslub42/rlwrap/issues/25]<br />
| {{ic|1=$ export RLWRAP_HOME="$XDG_DATA_HOME"/rlwrap}}<br />
|-<br />
| [http://www.scala-sbt.org/ sbt]<br />
| {{ic|~/.sbt}}<br />
{{ic|~/.ivy2}}<br />
|<br />
|<br />
| {{ic|1=$ sbt -ivy "$XDG_DATA_HOME"/ivy2 -sbt-dir "$XDG_DATA_HOME"/sbt}}<br />
|-<br />
| [[screen]]<br />
| {{ic|~/.screenrc}}<br />
|<br />
|<br />
| {{ic|1=$ export SCREENRC="$XDG_CONFIG_HOME"/screen/screenrc}}<br />
|-<br />
| [https://www.stackage.org/ stack]<br />
| {{ic|~/.stack}}<br />
|<br />
| [https://github.com/commercialhaskell/stack/issues/342]<br />
| {{ic|1=$ export STACK_ROOT="$XDG_DATA_HOME"/stack}}<br />
|-<br />
| [[subversion]]<br />
| {{ic|~/.subversion}}<br />
|<br />
| [https://issues.apache.org/jira/browse/SVN-4599] [https://mail-archives.apache.org/mod_mbox/subversion-users/201204.mbox/%3c4F8FBCC6.4080205@ritsuka.org%3e][http://mail-archives.apache.org/mod_mbox/subversion-dev/201509.mbox/%3c20150917222954.GA20331@teapot%3e]<br />
| {{ic|1=$ svn --config-dir "$XDG_CONFIG_HOME"/subversion}}<br />
|-<br />
| {{pkg|task}}<br />
| {{ic|~/.task}}<br />
<br />
{{ic|~/.taskrc}}<br />
|<br />
|<br />
| {{ic|1=$ export TASKDATA="$XDG_DATA_HOME"/task}}<br />
<br />
{{ic|1=$ export TASKRC="$XDG_CONFIG_HOME"/task/taskrc}}<br />
|-<br />
| [http://jonas.nitro.dk/tig/ tig]<br />
| {{ic|~/.tigrc}}<br />
|<br />
|<br />
| {{ic|1=$ export TIGRC_USER="$XDG_CONFIG_HOME"/tig/tigrc}}<br />
|-<br />
| [http://tiptop.gforge.inria.fr/ tiptop]<br />
| {{ic|~/.tiptoprc}}<br />
|<br />
|<br />
| This will still expect the {{ic|.tiptoprc}} file.<br />
{{ic|$ tiptop -W "$XDG_CONFIG_HOME"/tiptop}}<br />
|-<br />
| [[tmux]]<br />
| {{ic|~/.tmux.conf}}<br />
|<br />
| [http://comments.gmane.org/gmane.comp.terminal-emulators.tmux.user/6013] [http://sourceforge.net/p/tmux/mailman/message/30619546/]<br />
| {{ic|1=$ tmux -f "$XDG_CONFIG_HOME"/tmux/tmux.conf}}<br />
<br />
{{ic|1=$ export TMUX_TMPDIR="$XDG_RUNTIME_DIR"}}<br />
|-<br />
| [https://github.com/bengardner/uncrustify uncrustify]<br />
| {{ic|~/.uncrustify.cfg}}<br />
|<br />
|<br />
| {{ic|1=$ export UNCRUSTIFY_CONFIG="$XDG_CONFIG_HOME"/uncrustify/uncrustify.cfg}}<br />
|-<br />
| [[Unison]]<br />
| {{ic|~/.unison}}<br />
|<br />
|<br />
| {{ic|1=$ export UNISON="$XDG_DATA_HOME"/unison}}<br />
|-<br />
| [[Rxvt-unicode/Tips_and_tricks#Daemon-client|urxvtd]]<br />
| {{ic|~/.urxvt/urxvtd-hostname}}<br />
|<br />
|<br />
| {{ic|1=$ export RXVT_SOCKET="$XDG_RUNTIME_DIR"/urxvtd}}<br />
|-<br />
| [[WeeChat]]<br />
| {{ic|~/.weechat}}<br />
|<br />
| [http://savannah.nongnu.org/task/?10934]<br />
| {{ic|1=$ export WEECHAT_HOME="$XDG_CONFIG_HOME"/weechat}}<br />
<br />
{{ic|1=$ weechat -d "$XDG_CONFIG_HOME"/weechat}}<br />
|-<br />
| [[wget]]<br />
| {{ic|~/.wgetrc}}<br />
|<br />
|<br />
| {{ic|1=$ export WGETRC="$XDG_CONFIG_HOME/wgetrc"}}<br />
|-<br />
| [[wine]]<br />
| {{ic|~/.wine}}<br />
|<br />
| [https://bugs.winehq.org/show_bug.cgi?id=20888]<br />
| [[Wine#Winetricks|Winetricks]] uses XDG-alike location below for [[Wine#WINEPREFIX|WINEPREFIX]] management:<br />
{{ic|1=$ mkdir -p "$XDG_DATA_HOME"/wineprefixes}}<br />
<br />
{{ic|1=$ export WINEPREFIX="$XDG_DATA_HOME"/wineprefixes/default}}<br />
|-<br />
| {{pkg|xorg-xauth}}<br />
| {{ic|~/.Xauthority}}<br />
|<br />
|<br />
| {{ic|1=$ export XAUTHORITY="$XDG_RUNTIME_DIR"/Xauthority}}<br />
|-<br />
| {{pkg|xorg-xinit}}<br />
| {{ic|~/.xinitrc}}<br />
<br />
{{ic|~/.xserverrc}}<br />
|<br />
|<br />
| {{ic|1=$ export XINITRC="$XDG_CONFIG_HOME"/X11/xinitrc}}<br />
{{ic|1=$ export XSERVERRC="$XDG_CONFIG_HOME"/X11/xserverrc}}<br />
<br />
Note that these variables are respected by ''xinit'', but not by ''startx''.<br />
|-<br />
| {{pkg|xorg-xrdb}}<br />
| {{ic|~/.Xresources}}<br />
<br />
{{ic|~/.Xdefaults}}<br />
|<br />
|<br />
| Ultimately you [http://superuser.com/questions/243914/xresources-or-xdefaults should be] using {{ic|Xresources}} and since these resources are loaded via {{ic|xrdb}} you can specify a path such as {{ic|1=$ xrdb -load ~/.config/X11/xresources}}.<br />
|}<br />
<br />
==Hardcoded==<br />
<br />
{| class="wikitable sortable" style="width: 100%"<br />
! Application<br />
! Legacy Path<br />
! Discussion<br />
! Notes<br />
|-<br />
| [[adb]]<br />
| {{ic|~/.android}}<br />
| [https://developer.android.com/studio/command-line/variables.html#android_sdk_root]<br />
| {{ic|1=$ export ANDROID_SDK_HOME="$XDG_CONFIG_HOME"/android}}<br />
|-<br />
| [[AMule]]<br />
| {{ic|~/.aMule}}<br />
|<br />
|<br />
|-<br />
| [https://developer.android.com/studio/index.html Android Studio]<br />
| {{ic|~/.AndroidStudio2.3}}<br />
<br />
{{ic|~/.android}}<br />
<br />
{{ic|~/.java}}<br />
|<br />
|<br />
|-<br />
| [https://osdn.net/projects/anthy/ anthy]<br />
| {{ic|~/.anthy}}<br />
| [https://osdn.net/ticket/browse.php?group_id=14&tid=28397]<br />
|<br />
|-<br />
| [https://directory.apache.org/studio/ Apache Directory Studio]<br />
| {{ic|~/.ApacheDirectoryStudio}}<br />
|<br />
|-<br />
| [https://www.audacityteam.org/ Audacity]<br />
| {{ic|~/.audacity-data}}<br />
|<br />
|<br />
|-<br />
| [http://fixounet.free.fr/avidemux/ Avidemux]<br />
| {{ic|~/.avidemux6}}<br />
|<br />
|<br />
|-<br />
| [[bash]]<br />
| {{ic|~/.bashrc}}<br />
<br />
{{ic|~/.bash_history}}<br />
<br />
{{ic|~/.bash_profile}}<br />
<br />
{{ic|~/.bash_login}}<br />
<br />
{{ic|~/.bash_logout}}<br />
| [http://savannah.gnu.org/support/?108134]<sup>won't<br />
| A specified {{ic|bashrc}} can be sourced from {{ic|/etc/bashrc}}<br />
{{ic|1=$ export HISTFILE="$XDG_DATA_HOME"/bash/history}}<br />
|-<br />
| [[bazaar]]<br />
| {{ic|~/.bazaar}}<br />
<br />
{{ic|~/.bzr.log}}<br />
|<br />
|<br />
|-<br />
| [https://www.haskell.org/cabal/ cabal]<br />
| {{ic|~/.cabal}}<br />
| [https://github.com/haskell/cabal/issues/680]<br />
| See discussion for potential workarounds. It is not very easy or straightforward but may be possible to emulate Base Directory compliance.<br />
|-<br />
| [https://calibre-ebook.com/ calibre]<br />
| {{ic|~/Calibre Library}}<br />
|<br />
|<br />
|-<br />
| [[CUPS]]<br />
| {{ic|~/.cups}}<br />
| [http://www.cups.org/str.php?L4243]<sup>won't<br />
|<br />
|-<br />
| [[darcs]]<br />
| {{ic|~/.darcs}}<br />
| [http://bugs.darcs.net/issue2453]<br />
|<br />
|-<br />
| [[dbus]]<br />
| {{ic|~/.dbus}}<br />
| [https://bugs.freedesktop.org/show_bug.cgi?id=35887]<br />
| This should be avoidable with kdbus [citation needed].<br />
|-<br />
| [https://wiki.gnome.org/Apps/Dia Dia]<br />
| {{ic|~/.dia}}<br />
|<br />
|-<br />
| [[eclipse]]<br />
| {{ic|~/.eclipse}}<br />
| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=200809]<br />
| Option {{ic|1=-Dosgi.configuration.area=@user.home/.config/..}} overrides but must be added to {{ic|"$ECLIPSE_HOME"/eclipse.ini"}} rather than command line which means you must have write access to {{ic|$ECLIPSE_HOME}}. (Arch Linux hard-codes {{ic|$ECLIPSE_HOME}} in {{ic|/usr/bin/eclipse}})<br />
|-<br />
| [https://www.gnu.org/software/emacs/ emacs]<br />
| {{ic|~/.emacs}}<br />
<br />
{{ic|~/.emacs.d}}<br />
| [http://debbugs.gnu.org/cgi/bugreport.cgi?bug=583]<br />
| It's possible to set {{ic|HOME}}, but it has unexpected side effects. So far the most promising approach is modifying another Emacs environment variable to alter the load path and author your own site file which can manually load up your init file, but it changes the load process significantly.<br />
|-<br />
| [http://www.fetchmail.info/ Fetchmail]<br />
| {{ic|~/.fetchmailrc}}<br />
|<br />
|<br />
|-<br />
| [[Firefox]]<br />
| {{ic|~/.mozilla}}<br />
| [https://bugzil.la/259356]<br />
|<br />
|-<br />
| [[Flatpak]]<br />
| {{ic|~/.var/}}<br />
| [https://github.com/flatpak/flatpak/issues/46] [https://github.com/flatpak/flatpak.github.io/issues/191]<br />
|<br />
|-<br />
| [https://www.haskell.org/ghc/ GHC]<br />
| {{ic|~/.ghc}}<br />
| [https://ghc.haskell.org/trac/ghc/ticket/6077]<br />
|<br />
|-<br />
| [http://www.gnu.org/software/parallel/ GNU parallel]<br />
| {{ic|~/.parallel}}<br />
|<br />
|<br />
|-<br />
| [http://recordmydesktop.sourceforge.net/about.php gtk-recordMyDesktop]<br />
| {{ic|~/.gtk-recordmydesktop}}<br />
|<br />
|<br />
|-<br />
| [http://www.idris-lang.org/ idris]<br />
| {{ic|~/.idris}}<br />
| [https://github.com/idris-lang/Idris-dev/pull/3456]<br />
|<br />
|-<br />
| [http://julialang.org/ julia]<br />
| {{ic|~/.juliarc.jl}}<br />
<br />
{{ic|~/.julia_history}}<br />
| [https://github.com/JuliaLang/julia/issues/4630] [https://github.com/JuliaLang/julia/issues/10016]<br />
|<br />
|-<br />
| [http://www.linux-pam.org/ Linux PAM]<br />
| {{ic|~/.pam_environment}}<br />
| [https://github.com/linux-pam/linux-pam/issues/7]<br />
| Hardcoded in [https://github.com/linux-pam/linux-pam/blob/master/modules/pam_env/pam_env.c modules/pam_env/pam_env.c]<br />
|-<br />
| [http://lldb.llvm.org/ lldb]<br />
| {{ic|~/.lldb}}<br />
<br />
{{ic|~/.lldbinit}}<br />
|<br />
|<br />
|-<br />
| [http://www.mathomatic.org/ mathomatic]<br />
| {{ic|~/.mathomaticrc}}<br />
<br />
{{ic|~/.matho_history}}<br />
|<br />
| History can be moved by using {{ic|rlwrap mathomatic -r}} with the {{ic|RLWRAP_HOME}} environment set appropriately.<br />
|-<br />
| [http://www.milkytracker.org/ milkytracker]<br />
| {{ic|~/.milkytracker_config}}<br />
| [https://github.com/Deltafire/MilkyTracker/issues/12]<br />
|<br />
|-<br />
| [https://minecraft.net/ Minecraft]<br />
| {{ic|~/.minecraft}}<br />
| [https://bugs.mojang.com/browse/MCL-2563]<br />
|<br />
|-<br />
| [https://www.mongodb.org/ mongodb]<br />
| {{ic|~/.mongorc.js}}<br />
<br />
{{ic|~/.dbshell}}<br />
| [https://jira.mongodb.org/browse/DOCS-5652?jql=text%20~%20%22.mongorc.js%22]<br />
| [http://stackoverflow.com/a/22349050/4200039 This Stack Overflow thread] suggests a partial workaround using command-line switch {{ic|--norc}}.<br />
|-<br />
|<br />
| {{ic|~/.netrc}}<br />
|<br />
| Like {{ic|~/.ssh}}, many programs expect this file to be here. These include projects like curl ({{ic|CURLOPT_NETRC_FILE}}), ftp ({{ic|NETRC}}), s-nail ({{ic|NETRC}}), etc. While some of them offer alternative configurable locations, many do not such as w3m, wget and lftp.<br />
|-<br />
| [[nano]]<br />
| {{ic|~/.nano/}} {{ic|~/.nanorc}}<br />
| [https://savannah.gnu.org/patch/?8523]<br />
|-<br />
| [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS NSS]<br />
| {{ic|~/.pki}}<br />
| [https://bugzilla.mozilla.org/show_bug.cgi?id=818686]<br />
|<br />
|-<br />
| [https://www.openssh.com/ OpenSSH]<br />
| {{ic|~/.ssh}}<br />
| [https://bugzilla.mindrot.org/show_bug.cgi?id=2050]<br />
| Assumed to be present by many ssh daemons and clients such as DropBear and OpenSSH.<br />
|-<br />
| [https://www.palemoon.org/ palemoon]<br />
| {{ic|~/.moonchild productions}}<br />
| [https://forum.palemoon.org/viewtopic.php?f=5&t=9639]<br />
|<br />
|-<br />
| [https://perf.wiki.kernel.org/index.php/Main_Page perf]<br />
| {{ic|~/.debug}}<br />
|<br />
| Hardcoded in [https://github.com/torvalds/linux/blob/master/tools/perf/util/config.c#L18 tools/perf/util/config.c:18].<br />
|-<br />
| various [[shell]]s and [[display manager]]s<br />
| {{ic|~/.profile}}<br />
|<br />
|<br />
|-<br />
| [[python]]<br />
| {{ic|~/.python_history}}<br />
|<br />
| All history from interactive sessions is saved to {{ic|~/.python_history}} by default since [https://bugs.python.org/issue5845 version 3.4], custom path can still be set the same way as in older versions (see [https://docs.python.org/3/library/readline.html?highlight=readline#example this example]).<br />
|-<br />
| [https://doc.qt.io/qt-5/qtdesigner-manual.html Qt Designer]<br />
| {{ic|~/.designer}}<br />
|<br />
|<br />
|-<br />
| [https://quodlibet.readthedocs.io/en/latest/ Quod Libet]<br />
| {{ic|~/.quodlibet}}<br />
| [https://github.com/quodlibet/quodlibet/issues/138]<br />
|<br />
|-<br />
| [https://racket-lang.org/ racket]<br />
| {{ic|~/.racketrc}}<br />
|<br />
|<br />
|-<br />
| [http://rednotebook.sourceforge.net/ RedNotebook]<br />
| {{ic|~/.rednotebook}}<br />
|<br />
|<br />
|-<br />
| [https://remarkableapp.github.io/linux.html Remarkable]<br />
| {{ic|~/.remarkable}}<br />
|<br />
|<br />
|-<br />
| [https://www.scribus.net/ Scribus]<br />
| {{ic|~/.scribus}}<br />
|<br />
|-<br />
| [http://www.seamonkey-project.org/ SeaMonkey]<br />
| {{ic|~/.mozilla}}<br />
| [https://bugzil.la/726939]<br />
|<br />
|-<br />
| [[Skype]] < 5.0<br />
| {{ic|~/.Skype}}<br />
| [https://community.skype.com/t5/Linux-archive/Skype-violates-XDG-basedir-spec-on-linux/td-p/4175884]<br />
|<br />
|-<br />
| [https://www.gnu.org/software/solfege/solfege.html Solfege]<br />
| {{ic|~/.solfege}}<br />
<br />
{{ic|~/.solfegerc}}<br />
<br />
{{ic|~/lessonfiles}}<br />
| [https://savannah.gnu.org/bugs/index.php?50251]<br />
|<br />
|-<br />
| [https://spamassassin.apache.org/ SpamAssassin]<br />
| {{ic|~/.spamassassin}}<br />
|<br />
|<br />
|-<br />
| [[spectrwm]]<br />
| {{ic|~/.spectrwm}}<br />
|<br />
|<br />
|-<br />
| [[SQLite]]<br />
| {{ic|~/.sqlite_history}}<br />
<br />
{{ic|~/.sqliterc}}<br />
| [https://unix.stackexchange.com/questions/306890/change-location-of-sqlite-history-file][http://sqlite.1065341.n5.nabble.com/Customizing-the-location-of-the-sqlite-history-td87055.html]<br />
| {{ic|$ sqlite3 -init "$XDG_CONFIG_HOME"/sqlite3/sqliterc}}<br />
|-<br />
| [[Steam]]<br />
| {{ic|~/.steam}}<br />
{{ic|~/.steampath}}<br />
{{ic|~/.steampid}}<br />
| [https://github.com/ValveSoftware/steam-for-linux/issues/1890]<br />
|<br />
|-<br />
| [[TeamSpeak]]<br />
| {{ic|~/.ts3client}}<br />
|<br />
|-<br />
| [http://www.texmacs.org/ TeXmacs]<br />
| {{ic|~/.TeXmacs}}<br />
|<br />
|<br />
|-<br />
| [[Thunderbird]]<br />
| {{ic|~/.thunderbird}}<br />
| [https://bugzil.la/735285]<br />
|<br />
|-<br />
| [https://git.archlinux.org/users/remy/texlive-localmanager.git/ tllocalmgr]<br />
| {{ic|~/.texlive}}<br />
|<br />
|-<br />
| [[vim]]<br />
| {{ic|~/.vim}}<br />
<br />
{{ic|~/.vimrc}}<br />
<br />
{{ic|~/.viminfo}}<br />
|<br />
| Since [https://github.com/vim/vim/commit/6a459902592e2a4ba68 7.3.1178] vim will search for {{ic|~/.vim/vimrc}} if {{ic|~/.vimrc}} is not found.<br />
<br />
{{ic|1=<nowiki>$ mkdir -p "$XDG_CACHE_HOME"/vim/{undo,swap,backup}</nowiki>}}<br />
<br />
{{hc|"$XDG_CONFIG_HOME"/vim/vimrc|<br />
set undodir&#61;$XDG_CACHE_HOME/vim/undo<br />
set directory&#61;$XDG_CACHE_HOME/vim/swap<br />
set backupdir&#61;$XDG_CACHE_HOME/vim/backup<br />
set viminfo+&#61;'1000,n$XDG_CACHE_HOME/vim/viminfo<br />
set runtimepath&#61;$XDG_CONFIG_HOME/vim,$XDG_CONFIG_HOME/vim/after,$VIMRUNTIME<br />
}}<br />
<br />
{{hc|~/.profile|<br />
export VIMINIT&#61;":source $XDG_CONFIG_HOME"/vim/vimrc<br />
}}<br />
<br />
* https://tlvince.com/vim-respect-xdg<br />
|-<br />
| [http://www.vimperator.org/ vimperator]<br />
| {{ic|~/.vimperatorrc}}<br />
| [http://www.mozdev.org/pipermail/vimperator/2009-October/004848.html]<br />
| {{ic|1=$ export VIMPERATOR_INIT=":source $XDG_CONFIG_HOME/vimperator/vimperatorrc"}}<br />
<br />
{{ic|1=$ export VIMPERATOR_RUNTIME="$XDG_CONFIG_HOME"/vimperator}}<br />
|-<br />
| [https://w1.fi/ wpa_cli]<br />
| {{ic|~/.wpa_cli_history}}<br />
|<br />
|<br />
|-<br />
| {{pkg|xdg-utils}}<br />
| {{ic|~/.gnome}}<br />
|<br />
| For some reason the script {{ic|xdg-desktop-menu}} hard-codes {{ic|gnome_user_dir&#61;"$HOME/.gnome/apps"}}. This is used by [[chromium]] amoung others.<br />
|-<br />
| [https://opensource.conformal.com/wiki/xombrero xombrero]<br />
| {{ic|~/.xombrero}}<br />
| [https://github.com/conformal/xombrero/issues/74]<br />
|<br />
|-<br />
| {{pkg|yarn}}<br />
| {{ic|~/.yarnrc}}<br />
<br />
{{ic|~/.yarn/}}<br />
<br />
{{ic|~/.yarncache/}}<br />
<br />
{{ic|~/.yarn-config/}}<br />
| [https://github.com/yarnpkg/yarn/issues/2334]<br />
|<br />
|-<br />
| [[zsh]]<br />
| {{ic|~/.zshrc}}<br />
<br />
{{ic|~/.zprofile}} {{ic|~/.zshenv}}<br />
<br />
{{ic|~/.zlogin}} {{ic|~/.zlogout}}<br />
<br />
{{ic|~/.histfile}}<br />
| [http://www.zsh.org/mla/workers/2013/msg00692.html]<br />
| Consider exporting {{ic|1=ZDOTDIR=$HOME/.config/zsh}} in {{ic|~/.zshenv}} (this is hardcoded due to the bootstrap problem). You could also add this to {{ic|/etc/zsh/zshenv}} and avoid the need for any dotfiles in your {{ic|HOME}}. Doing this however requires root privilege which may not be viable and is system-wide.<br />
<br />
{{ic|1=$ export HISTFILE="$XDG_DATA_HOME"/zsh/history}}<br />
|}<br />
<br />
==Library and language support==<br />
<br />
; C<br />
: [https://github.com/Cloudef/chck/tree/master/chck/xdg C99: Cloudef's simple implementation].<br />
<br />
; Haskell<br />
: Officially in [https://hackage.haskell.org/package/directory directory] since 1.2.3.0 [https://github.com/haskell/directory/commit/ab9d0810ce ab9d0810ce].<br />
: [https://hackage.haskell.org/package/xdg-basedir xdg-basedir]<br />
<br />
; Perl<br />
: [http://search.cpan.org/dist/File-BaseDir/lib/File/BaseDir.pm File-BaseDir]<br />
: [https://github.com/Aerdan/perl-file-xdg perl-file-xdg]<br />
<br />
; Python<br />
: [http://freedesktop.org/wiki/Software/pyxdg/ pyxdg]<br />
<br />
; Ruby<br />
: [https://github.com/rubyworks/xdg rubyworks/xdg]<br />
<br />
; Vala<br />
: Builtin support via [http://valadoc.org/#!api=glib-2.0/GLib.Environment GLib.Environment].<br />
: See {{ic|get_user_cache_dir}}, {{ic|get_user_data_dir}}, {{ic|get_user_config_dir}}, etc.<br />
<br />
==See also==<br />
<br />
* [https://wiki.gnome.org/Initiatives/GnomeGoals/XDGConfigFolders GNOME Goal: XDG Base Directory Specification Usage]<br />
* [https://plus.google.com/+RobPikeTheHuman/posts/R58WgWwN9jp Rob Pike: "Dotfiles" being hidden is a UNIXv2 mistake].<br />
* [http://www.freedesktop.org/software/systemd/man/systemd-path.html systemd-path(1)]<br />
* [http://www.freedesktop.org/software/systemd/man/file-hierarchy.html file-hierarchy(7)]<br />
* [https://github.com/grawity/dotfiles/blob/master/.dotfiles.notes Grawity's notes on dotfiles].<br />
* [https://github.com/grawity/dotfiles/blob/master/.environ.notes Grawity's notes on environment variables].<br />
* [https://ploum.net/207-modify-your-application-to-use-xdg-folders/ ploum.net: Modify Your Application to use XDG Folders].</div>Towohttps://wiki.archlinux.org/index.php?title=Talk:XDG_Base_Directory&diff=493978Talk:XDG Base Directory2017-10-24T12:32:16Z<p>Towo: /* libice */ new section</p>
<hr />
<div>== emacs ==<br />
Has anyone looked at [http://technical-hobbyist.blogspot.com/2014/01/xdg-directories-for-emacs.html? XDG Directories for emacs]? [[User:Ben Creasy|Ben Creasy]] ([[User talk:Ben Creasy|talk]]) 02:40, 15 July 2015 (UTC)<br />
:It seems that still needs an {{ic|~/.emacs}}, so I'm unsure it's a great improvement over a single {{ic|~/.emacs.d}}. That said, you could try to start emacs with the {{ic|--load}} or {{ic|--directory}} argument. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 09:15, 1 September 2015 (UTC)<br />
<br />
== Abuse of XDG_CONFIG_HOME ==<br />
<br />
I've just revised the VCS management of my config files and had to put configs of practically all graphical programs to {{ic|.gitignore}}, because they all abuse the {{ic|$XDG_CONFIG_HOME}} path for the purpose of persistent cache, which is {{ic|$XDG_CACHE_HOME}}. A typical config file of a [[Qt]] programs looks [https://gist.github.com/lahwaacz/8a806d9c248cff10ffe0 like this], notice especially the {{ic|recentFileList}}, {{ic|geometry}} and {{ic|windowState}} keys -- IMHO this is exactly the stuff that belongs to {{ic|$XDG_CACHE_HOME}} or {{ic|$XDG_DATA_HOME}}. The [[Qt]] programs are notorious, I suspect the toolkit itself is responsible. But there is more: inkscape puts there {{ic|extension-errors.log}}, syncthing even the entire database. What shall we do about this? There are not many graphical programs in the tables on this page, but inkscape is listed under "Supported", which is not entirely true... -- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 22:12, 21 August 2015 (UTC)<br />
<br />
:The article uses "workarounds [that] will be limited to anything not involving patching the source, executing code stored in environment variables or compile-time options." as an arbiter for the "Partial" category, and anything more complicated than that for "Hardcoded". I.e., categorization is based on what's needed to moving dotfiles from $HOME to some, hopefully correct, XDG directory or directories.<br />
:One way to supplement this would be the Notes column in the Supported category (which is now mostly empty anyway), to expand on programs which don't follow the intent of the XDG directories or which just lazily stack things together. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 09:08, 1 September 2015 (UTC)<br />
<br />
::This is why adding {{ic|*}} to {{ic|GIT_DIR/info/exclude}} is so great. I have no idea why people who are familiar with git don't do this by default. This allows you to only track files you explicitly want to track with impunity. But yes, there's plenty of programs which don't follow the spec to the letter and that's mostly fine; it's fine because at least the root of their directory is now under user control. Using git properly makes this a non-issue and I'd rather projects at least support some of XDG than be forever debating what "cache" vs "data" means... [[User:Earnest|Earnest]] ([[User talk:Earnest|talk]]) 15:31, 12 September 2015 (UTC)<br />
<br />
== Expansion ==<br />
<br />
{{ic|XDG_RUNTIME_DIR}} is set by pam_systemd, so for the majority of Arch installations it is already set - "some systems" is ambiguous. It might be more useful to mention {{ic|XDG_RUNTIME_DIR}} in [[init]] instead, together with {{ic|XDG_VTNR}}. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 12:48, 26 December 2015 (UTC)<br />
<br />
:Thanks, for the moment I've made [https://wiki.archlinux.org/index.php?title=XDG_Base_Directory_support&type=revision&diff=413542&oldid=413478 this] edit: users on non-systemd machines will be able to adapt the information.<br />
:If you have a good idea for mentioning those vars in [[init]], it can be interesting indeed.<br />
:—[[User:Kynikos|Kynikos]] ([[User talk:Kynikos|talk]]) 05:10, 27 December 2015 (UTC)<br />
<br />
::While certainly useful and relevant for [[init]], the article itself is short in the section. But [[Init#Dbus]] links out to [[Systemd/User#D-Bus]], which has a subsection [[Systemd/User#Environment variables]]. How about adding it there instead? --[[User:Indigo|Indigo]] ([[User talk:Indigo|talk]]) 19:27, 4 January 2016 (UTC)<br />
<br />
:::If we can verify that neither variables are set in the user instance, then +1 for adding them to that section. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 13:16, 16 January 2016 (UTC)<br />
<br />
The wiki does not indicate what {{ic|XDG_RUNTIME_DIR}} is set to (/run/user/$UID) This is the only XDG directory that isn't listed in the wiki and that information would have helped me. My edit was rejected as being redundant with the note. I'd suggest then that either the path be added to the note, or the note moved to the XDG_RUNTIME_DIR section and include the path there.<br />
{{unsigned|05:28, 12 December 2016|Skimj}}<br />
<br />
:The [https://specifications.freedesktop.org/basedir-spec/latest/ar01s03.html standard] does not specify any default path for {{ic|XDG_RUNTIME_DIR}} and we should not mix Arch-defaults with the standard paths. There is a link to [https://www.freedesktop.org/software/systemd/man/pam_systemd.html pam_systemd] which manages the variable. -- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 08:03, 12 December 2016 (UTC)<br />
::I only disagree that providing a key peice of information about how a software program operates is outside the scope of the wiki. Note also that the current pam_systemd documentation is slightly wrong: $USER vs. $UID.<br />
<br />
== Relevance of Arch-specific content on the ArchWiki ==<br />
<br />
[[User:Earnest]] [https://wiki.archlinux.org/index.php?title=XDG_Base_Directory_support&type=revision&diff=414374&oldid=413683 removed] some content by judging it as "irrelevant", despite being clearly related to Arch Linux. The goal of that section can't simply be to mirror the freedesktop.org specification, otherwise a simple link to it will be fine. I have [https://wiki.archlinux.org/index.php?title=XDG_Base_Directory_support&diff=414375&oldid=414374 undone] the removal. Instead of starting an edit war, let's settle the issue here. — [[User:Kynikos|Kynikos]] ([[User talk:Kynikos|talk]]) 12:11, 4 January 2016 (UTC)<br />
<br />
:The article relies that those variables are set somewhere, and the bug report provides some historical background. That said, what Arch does is not part of the specification; so those lines should either be a Note (as we have now), or moved to a more appropriate section (or article?) and part of the regular text.<br />
:In either case, it's preferable to have the text in one place, i.e. merge the two notes on Arch and {{ic|XDG_RUNTIME_DIR}}. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 13:14, 16 January 2016 (UTC)<br />
<br />
::Since this is our only article that discusses the support for the specification (and it wouldn't make sense to have another), I think it's only natural that, even before talking about the various applications, we say how Arch itself supports it.<br />
::If it was me, I'd take a different approach, and restructure the "The XDG Base Directory specification" section so that, instead of duplicating the upstream specification (which is as easy to read), its primary goal is indeed to introduce what variables have to be defined by end users in an Arch system, and which ones are set by default, still accompanying them with short descriptions of their purpose, so that using Notes isn't even necessary anymore. The section could be renamed to e.g. "Define the variables".<br />
::— [[User:Kynikos|Kynikos]] ([[User talk:Kynikos|talk]]) 05:33, 17 January 2016 (UTC)<br />
<br />
:::If you have a different approach in mind, could you make a draft here or on your user page?<br />
:::About the variables, more expansive descriptions may be better suited for other articles, such as [[systemd/User]], as suggested in [[#Expansion]]. For example, compare [https://github.com/systemd/systemd/issues/232] for the importance of {{ic|XDG_RUNTIME_DIR}} to [[systemd/User]]. We could then link from here. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 00:51, 29 January 2016 (UTC)<br />
<br />
::::I didn't have anything complicated in mind, just rewriting the section intro from a different perspective, see [[User:Kynikos/XDG Base Directory support]] for an example. Note that [[Systemd/User#XDG_RUNTIME_DIR|XDG_RUNTIME_DIR]] is actually a link to [[Systemd/User#XDG_RUNTIME_DIR]] where I too think we should move the specific info. — [[User:Kynikos|Kynikos]] ([[User talk:Kynikos|talk]]) 04:16, 30 January 2016 (UTC)<br />
<br />
== <s>Sample the explicit XDG Base Directory environment variables setup</s> ==<br />
<br />
:''[Moved from [[Talk:General recommendations]]. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 14:40, 22 September 2016 (UTC)]''<br />
<br />
*Someone, more experienced in proper usage of XDG Base Directory environment variables, - can contribute configuration from his setup (that complies both Arch architecture an [https://standards.freedesktop.org/basedir-spec/latest/ar01s03.html XDG Base Directory Specification]). - [[User:PiroXiline|PiroXiline]] ([[User talk:PiroXiline|talk]]) 14:08, 20 September 2016 (UTC)<br />
<br />
::This page provides a general overview, not specific procedures. In this case, those are already outlined in [[XDG Base Directory support]]. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 08:35, 21 September 2016 (UTC)<br />
<br />
:::I wrote here, because raising a post-install process addition is to start a discussion in 'General recommendations'. I could not start it in [[XDG Base Directory support]], and :::I wrote here, because raising a post-install process addition is to start a discussion in 'General recommendations'. I could not start it in [[XDG Base Directory support]], and start to explain the major point to add reference info from 'General recommendations' there. - [[User:PiroXiline|PiroXiline]] ([[User talk:PiroXiline|talk]]) 14:19, 22 September 2016 (UTC)<br />
<br />
:::Here is proposition of sample from my setup:<br />
<br />
----<br />
==== Explicitly set XDG Base Directory environment variables ====<br />
<br />
By default in Arch ''XDG Base Directory environment variables'' are empty, relaying on [https://standards.freedesktop.org/basedir-spec/latest/ar01s03.html XDG Base Directory Specification defaults].<br />
<br />
If these variables are empty, some programs doesn't comply to specification, and place their data in {{ic|$HOME/.app-folder}}. In {{ic|$HOME/.app-folder}} application starts to store all it's information (configuration files, data, and cache simultaneously). While ''XDG Base Directory'' usage requires separation of configuration files, data, and cache.<br />
<br />
Changing the environment variables after these programs placed their data in {{ic|$HOME/.app-folder}}, creates a problem of separation and linking all applications to configuration files, data and caches. Otherwise default application behavior is to populate new directories with default configuration, data and caches.<br />
<br />
So a good workaround to that issue is set ''XDG Base Directory environment variables'' after [[Installation guide|Arch Linux basic installation]] during [[General_recommendations|post-install process]]. While system is in clear state.<br />
<br />
To explicitly set ''XDG Base Directory environment variables'' to proper defaults:<br />
<br />
{{hc|~/.pam_environment|<br />
2=XDG_CONFIG_HOME=/home/''user''/.config<br />
XDG_DATA_HOME=/home/''user''/.local/share<br />
XDG_CACHE_HOME=/home/''user''/.cache<br />
XDG_DATA_DIRS=/usr/local/share/:/usr/share/<br />
XDG_CONFIG_DIRS=/etc/xdg<br />
}}<br />
<br />
{{Note|[[Environment_variables#Defining_variables|Environment file]] {{ic|~/.pam_environment}} does not provide support for globing or variable expansion of shells, so '{{ic|$HOME}}' or '{{ic|~}}' taken as literal relative directory names.}}<br />
{{Note|If no path specified in ~/.pam_environment is not absolute path, than path relative to ''user'' {{ic|$HOME}} is implied.<br />
So it also can be:<br />
<br />
{{hc|~/.pam_environment|<br />
2=XDG_CONFIG_HOME=.config<br />
XDG_DATA_HOME=.local/share<br />
XDG_CACHE_HOME=.cache<br />
XDG_DATA_DIRS=/usr/local/share/:/usr/share/<br />
XDG_CONFIG_DIRS=/etc/xdg<br />
}}}}<br />
<br />
{{ic|XDG_''*''_HOME}} variables has priority over {{ic|XDG_''*_DIRS}}.<br />
<br />
----<br />
<br />
::Many things not obvious in [[Environment_variables#Defining_variables]] and specs, that is why I checked it by try and error and made a notes to users. Maybe that notes need to be merged in Environment_variables#Defining_variables, I rely on your opinion.<br />
::I, for myself, also added to {{ic|XDG_DATA_DIRS}} and {{ic|XDG_DATA_DIRS}} some additional cross-reference paths, for a purpose cleaning-up and some live migration. So apps look in more places to find their configs/data/caches.<br />
:: So also can be added Tip:<br />
:: {{Tip|On manual migration, cross-reference paths can be added to end of {{ic|XDG_*_DIRS}}, if needed. So application, after {{ic|XDG_''*''_HOME}}, going to look in {{ic|XDG_''*''_HOME}} with more places to find configuration, data and cache.}} -- [[User:PiroXiline|PiroXiline]] ([[User talk:PiroXiline|talk]]) 14:38, 22 September 2016 (UTC)<br />
<br />
:::The first part gives the impression that setting {{ic|XDG_*}} variables is somehow going to make applications which do not respect the specification comply, which is obviously false. <br />
<br />
:::The second part duplicates [[Environment variables]]. If something is not clear in that article, mention it on the talk page: [[Talk:Environment variables]]. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 14:47, 22 September 2016 (UTC)<br />
<br />
== Arch package page, or project page? ==<br />
<br />
Currently in the ''Application'' column of the tables, there are three types of links: wiki links like [[fish]], package links like {{Pkg|ncurses}} (including AUR like {{AUR|sublime-text-dev}}), and project links like [https://github.com/Antimicro/antimicro/ antimicro]. Is there any consensus about the preference of these three types? I suggest wiki links over package over project links, because:<br />
<br />
# Wiki pages have more information, and typically contains both package links and project links.<br />
# Package pages contains project links, along with some information useful to Arch users.<br />
<br />
Thoughts? --[[User:Franklin Yu|Franklin Yu]] ([[User talk:Franklin Yu|talk]]) 20:28, 22 April 2017 (UTC)<br />
<br />
:To be honest I'm not sure why this page even contains package links; we have [[List of applications]] and dedicated articles where we already keep those links up-to-date. Using wiki links instead does sound like a better idea. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 22:47, 22 April 2017 (UTC)<br />
<br />
:: So you prefer project links over package links? Or no link at all, if the application does not have a Wiki link? --[[User:Franklin Yu|Franklin Yu]] ([[User talk:Franklin Yu|talk]]) 06:22, 23 April 2017 (UTC)<br />
<br />
== Should command-line history be data or cache? ==<br />
<br />
Should they be placed in {{ic|XDG_DATA_HOME}}, or {{ic|XDG_CACHE_HOME}}? --[[User:Franklin Yu|Franklin Yu]] ([[User talk:Franklin Yu|talk]]) 20:07, 16 May 2017 (UTC)<br />
<br />
: Cache is data than can be deleted at any time without losing anything important, as it can be regenerated by the application (e.g. by re-downloading something or otherwise). Data in {{ic|XDG_DATA_HOME}} on the other hand has an impact on what the user can do, and the user would mind about losing it. Of course it may depend on the application in question where you draw the line of what's "important", but when deleting command line history, (1) the user loses possibilities (reusing a command) and information/knowlege ("what was that command again?"), and (2) the data cannot be regenerated by the application, so I would clearly put it in {{ic|XDG_DATA_HOME}}. —[[User:Ayekat|Ayekat]] ([[User talk:Ayekat|talk]]) 22:30, 16 May 2017 (UTC)<br />
<br />
== libice ==<br />
<br />
I didn't bother to check out who added the libice bit, but it can be quite dangerous to set that with e.g. gdm, as gdm wants to have a look at the user's ICEauthority for handing off the login session to the user. If one stores it in XDG_RUNTIME_DIR, gdm is not very forthcoming with the debug messages, and if you don't start rolling back your etckeeper, you'll spend a long time debugging what happened.</div>Towohttps://wiki.archlinux.org/index.php?title=Install_Arch_Linux_from_existing_Linux&diff=490927Install Arch Linux from existing Linux2017-09-21T09:16:09Z<p>Towo: Monthly bump.</p>
<hr />
<div>[[Category:Getting and installing Arch]]<br />
[[es:Install from existing Linux]]<br />
[[fr:Install chroot]]<br />
[[it:Install from existing Linux]]<br />
[[ja:既存の Linux からインストール]]<br />
[[pt:Install from existing Linux]]<br />
[[ru:Install from existing Linux]]<br />
[[uk:Install from existing Linux]]<br />
[[zh-hans:Install from existing Linux]]<br />
[[zh-hant:Install from existing Linux]]<br />
{{Related articles start}}<br />
{{Related|Install from SSH}}<br />
{{Related articles end}}<br />
<br />
This document describes the bootstrapping process required to install Arch Linux from a running Linux host system.<br />
After bootstrapping, the installation proceeds as described in the [[Installation guide]].<br />
<br />
Installing Arch Linux from a running Linux is useful for:<br />
<br />
* remotely installing Arch Linux, e.g. a (virtual) root server<br />
* replacing an existing Linux without a LiveCD (see [[#Replacing the existing system without a LiveCD]])<br />
* creating a new Linux distribution or LiveCD based on Arch Linux<br />
* creating an Arch Linux chroot environment, e.g. for a Docker base container<br />
* [[Diskless_network_boot_NFS_root|rootfs-over-NFS for diskless machines]]<br />
<br />
The goal of the bootstrapping procedure is to setup an environment from which the scripts from {{Pkg|arch-install-scripts}} (such as {{ic|pacstrap}} and {{ic|arch-chroot}}) can be run.<br />
<br />
If the host system runs Arch Linux, this can be achieved by simply installing {{Pkg|arch-install-scripts}}. If the host system runs another Linux distribution, you will first need to set up an Arch Linux-based chroot.<br />
<br />
{{Note|This guide requires that the existing host system be able to execute the new target Arch Linux architecture programs. In the case of an x86_64 host, it is possible to use i686-pacman to build a 32-bit chroot environment. See [[Install bundled 32-bit system in 64-bit system]]. However it is not so easy to build a 64-bit environment when the host only supports running 32-bit programs.}}<br />
<br />
{{Warning|Please make sure you understand each step before proceeding. It is easy to destroy your system or to lose critical data, and your service provider will likely charge a lot to help you recover. }}<br />
<br />
==Backup and Preparation==<br />
Backup all your data including mails, webservers, etc. Have all information at your fingertips. Preserve all your server configurations, hostnames, etc.<br />
<br />
Here is a list of data you will likely need:<br />
* IP address<br />
* hostname(s), (note: rootserver are mostly also part of the providers domain, check or save your {{ic|/etc/hosts}} before you delete)<br />
* DNS server (check {{ic|/etc/resolv.conf}})<br />
* SSH keys (if other people work on your server, they will have to accept new keys otherwise. This includes keys from your Apache, your mail servers, your SSH server and others.)<br />
* Hardware info (network card, etc. Refer to your pre-installed {{ic|/etc/modules.conf}} )<br />
* Grub configuration files.<br />
<br />
In general, it is a good idea to have a local copy of your original {{ic|/etc}} directory on your local hard drive.<br />
<br />
== From a host running Arch Linux ==<br />
<br />
Install the {{Pkg|arch-install-scripts}} package.<br />
<br />
Follow [[Installation guide#Mount the file systems]]. If you already use the {{ic|/mnt}} directory for something else, just create another directory such as {{ic|/mnt/install}}, and use that instead.<br />
<br />
Then follow [[Installation guide#Installation]]. You can skip [[Installation guide#Select the mirrors]], since the host should already have a correct mirrorlist.<br />
<br />
{{Tip|In order to avoid redownloading all the packages, consider following [[Pacman/Tips and tricks#Network shared pacman cache]] or using ''pacstrap'''s {{ic|-c}} option.}}<br />
<br />
{{Merge|Moving_an_existing_install_into_(or_out_of)_a_virtual_machine#Moving_into_a_VM|Same approach.}}<br />
<br />
{{Note|If you only want to create an exact copy of an existing Arch installation, it is also possible to just copy the filesystem to the new partition. With this method, you will still need to<br />
<br />
* Create [[Installation guide#Fstab|{{ic|/etc/fstab}}]] and edit {{ic|/etc/hostname}}<br />
* Delete {{ic|/etc/machine-id}} so that a new, unique, one will be regenerated on boot<br />
* Make any other changes appropriate to the installation medium<br />
* Install the bootloader<br />
<br />
When copying the filesystem root, use something like {{ic|cp -ax}} or {{ic|rsync -axX}}. This avoids copying contents of mountpoints ({{ic|-x}}), and preserves the [[capabilities]] attributes of some system binaries ({{ic|rsync -X}}).<br />
}}<br />
<br />
== From a host running another Linux distribution ==<br />
<br />
There are multiple tools which automate a large part of the steps described in the following subsections. See their respective homepages for detailed instructions.<br />
<br />
* [https://github.com/tokland/arch-bootstrap arch-bootstrap] (Bash)<br />
* [https://github.com/hartwork/image-bootstrap image-bootstrap] (Python)<br />
* [https://github.com/drizzt/vps2arch vps2arch] (Bash)<br />
* [https://github.com/m4rienf/ArchCX archcx] (Bash, from Hetzner CX Rescue System)<br />
<br />
The manual way is presented in the following subsections. The idea is to run an Arch system inside the host system, with the actual installation being executed from the Arch system. The nested system is contained inside a chroot.<br />
<br />
=== Creating the chroot ===<br />
<br />
Two methods to setup and enter the chroot are presented below, from the easiest to the most complicated. Select only one of the two methods. Then, continue at [[#Using the chroot environment]].<br />
<br />
==== Method A: Using the bootstrap image (recommended) ====<br />
<br />
Download the bootstrap image from a [https://www.archlinux.org/download mirror]:<br />
# cd /tmp<br />
# curl -O https://mirrors.kernel.org/archlinux/iso/latest/archlinux-bootstrap-2017.09.01-x86_64.tar.gz<br />
<br />
You can also download the signature (same URL with {{ic|.sig}} added) and [[GnuPG#Verify_a_signature|verify it with GnuPG]].<br />
<br />
Extract the tarball:<br />
# tar xzf <path-to-bootstrap-image>/archlinux-bootstrap-2017.09.01-x86_64.tar.gz<br />
<br />
Select a repository server by editing {{ic|/tmp/root.x86_64/etc/pacman.d/mirrorlist}}.<br />
<br />
{{Note|If bootstrapping an i686 image from an x86_64 host system, also edit {{Ic|/tmp/root.i686/etc/pacman.conf}} and explicitly define {{Ic|1=Architecture = i686}} in order for pacman to pull the proper i686 packages.}}<br />
<br />
Enter the chroot<br />
<br />
* If bash 4 or later is installed, and unshare supports the --fork and --pid options:<br />
# /tmp/root.x86_64/bin/arch-chroot /tmp/root.x86_64/<br />
* Otherwise, run the following commands:<br />
# mount --bind /tmp/root.x86_64 /tmp/root.x86_64<br />
# cd /tmp/root.x86_64<br />
# cp /etc/resolv.conf etc<br />
# mount -t proc /proc proc<br />
# mount --rbind /sys sys<br />
# mount --rbind /dev dev<br />
# mount --rbind /run run # (assuming /run exists on the system)<br />
# chroot /tmp/root.x86_64 /bin/bash<br />
<br />
==== Method B: Using the LiveCD image ====<br />
<br />
It is possible to mount the root image of the latest Arch Linux installation media and then chroot into it. This method has the advantage of providing a working Arch Linux installation right within the host system without the need to prepare it by installing specific packages.<br />
<br />
{{Note|Before proceeding, make sure the latest version of [http://squashfs.sourceforge.net/ squashfs] is installed on the host system. Otherwise, errors like the following are to be expected: {{ic|FATAL ERROR aborting: uncompress_inode_table: failed to read block}}.}}<br />
<br />
* The root image can be found on one of the [https://www.archlinux.org/download mirrors] under either arch/x86_64/ or arch/i686/, depending on the desired architecture. The squashfs format is not editable, so we unsquash the root image and mount it.<br />
<br />
*To unsquash the root image, run<br />
{{bc|# unsquashfs airootfs.sfs}}<br />
<br />
* Before [[Change root|chrooting]] to it, we need to set up some mount points and copy the resolv.conf for networking.<br />
{{bc|<br />
# mount --bind squashfs-root squashfs-root<br />
# mount -t proc none squashfs-root/proc<br />
# mount -t sysfs none squashfs-root/sys<br />
# mount -o bind /dev squashfs-root/dev<br />
# mount -o bind /dev/pts squashfs-root/dev/pts ## important for pacman (for signature check)<br />
# cp -L /etc/resolv.conf squashfs-root/etc ## this is needed to use networking within the chroot<br />
}}<br />
<br />
* Now, everything is prepared to chroot into the newly installed Arch environment<br />
{{bc|# chroot squashfs-root bash}}<br />
<br />
=== Using the chroot environment ===<br />
<br />
The bootstrap environment is really barebones (no {{ic|nano}}, no {{ic|ping}}, no {{ic|cryptsetup}}, no {{ic|lvm}}). Therefore, we need to set up [[pacman]] in order to download the rest of the {{ic|base}} and, if needed, {{ic|base-devel}}.<br />
<br />
==== Initializing pacman keyring ====<br />
<br />
Before starting the installation, pacman keys need to be setup. Before running the following two commands, read [[pacman-key#Initializing the keyring]] to understand the entropy requirements:<br />
{{bc|<br />
# pacman-key --init<br />
# pacman-key --populate archlinux<br />
}}<br />
<br />
{{Tip|Installing and running {{Pkg|haveged}} must be done on the host system, since it is not possible to install packages before initializing pacman keyring and because ''systemd'' will detect it is running in a chroot and [https://superuser.com/questions/688733/start-a-systemd-service-inside-chroot ignore activation request].<br />
<br />
If you go with doing {{ic|ls -Ra /}} in another console (TTY, terminal, SSH session...), do not be afraid of running it in a loop a few times: five or six runs from the host proved sufficient to generate enough entropy on a remote headless server.}}<br />
<br />
==== Selecting a mirror and downloading basic tools ====<br />
<br />
After [[Mirrors#Enabling_a_specific_mirror|selecting a mirror]], [[Mirrors#Force_pacman_to_refresh_the_package_lists|refresh the package lists]] and [[install]] what you need: {{Grp|base}}, {{Grp|base-devel}}, {{Pkg|parted}} etc.<br />
<br />
=== Installation tips ===<br />
<br />
You can now proceed to [[Installation guide#Partition the disks]] and follow the rest of the [[Installation guide]].<br />
<br />
Some host systems or configurations may require certain extra steps. See the sections below for tips.<br />
<br />
===== Debian-based host =====<br />
<br />
====== /dev/shm ======<br />
<br />
On some Debian-based host systems, {{ic|pacstrap}} may produce the following error:<br />
<br />
{{hc|# pacstrap /mnt base|<br />
==> Creating install root at /mnt<br />
mount: mount point /mnt/dev/shm is a symbolic link to nowhere<br />
==> ERROR: failed to setup API filesystems in new root<br />
}}<br />
<br />
This is because in some versions of Debian, {{ic|/dev/shm}} points to {{ic|/run/shm}} while in the Arch-based chroot, {{ic|/run/shm}} does not exist and the link is broken. To correct this error, create a directory {{ic|/run/shm}}:<br />
# mkdir /run/shm<br />
<br />
====== /dev/pts ======<br />
<br />
While installing {{ic|archlinux-2015.07.01-x86_64}} from a Debian 7 host, the following error prevented both [https://projects.archlinux.org/arch-install-scripts.git/tree/pacstrap.in pacstrap] and [[Change_root#Using_arch-chroot|arch-chroot]] from working:<br />
<br />
{{hc|# pacstrap -i /mnt|<br />
mount: mount point /mnt/dev/pts does not exist<br />
==> ERROR: failed to setup chroot /mnt<br />
}}<br />
<br />
Apparently, this is because these two scripts use a common function. {{ic|chroot_setup()}}[https://projects.archlinux.org/arch-install-scripts.git/tree/common#n76] relies on newer features of {{Pkg|util-linux}}, which are incompatible with Debian 7 userland (see {{Bug|45737}}).<br />
<br />
The solution for ''pacstrap'' is to manually execute its [https://projects.archlinux.org/arch-install-scripts.git/tree/pacstrap.in#n77 various tasks], but use the [[Change_root#Using_chroot|regular procedure]] to mount the kernel filesystems on the target directory ({{ic|"$newroot"}}):<br />
<br />
{{bc|1=<br />
# newroot=/mnt<br />
# mkdir -m 0755 -p "$newroot"/var/{cache/pacman/pkg,lib/pacman,log} "$newroot"/{dev,run,etc}<br />
# mkdir -m 1777 -p "$newroot"/tmp<br />
# mkdir -m 0555 -p "$newroot"/{sys,proc}<br />
# mount --bind "$newroot" "$newroot"<br />
# mount -t proc /proc "$newroot/proc"<br />
# mount --rbind /sys "$newroot/sys"<br />
# mount --rbind /run "$newroot/run"<br />
# mount --rbind /dev "$newroot/dev"<br />
# pacman -r "$newroot" --cachedir="$newroot/var/cache/pacman/pkg" -Sy base base-devel ... ## add the packages you want<br />
# cp -a /etc/pacman.d/gnupg "$newroot/etc/pacman.d/" ## copy keyring<br />
# cp -a /etc/pacman.d/mirrorlist "$newroot/etc/pacman.d/" ## copy mirrorlist<br />
}}<br />
<br />
Instead of using {{ic|arch-chroot}} for [[Installation guide#Chroot]], simply use {{ic|chroot "$newroot"}}.<br />
<br />
====== lvmetad ======<br />
<br />
Trying to create [[LVM]] [[LVM#Logical_volumes|logical volumes]] from an {{ic|archlinux-bootstrap-2015.07.01-x86_64}} environment on a Debian 7 host resulted in the following error:<br />
<br />
{{hc|# lvcreate -L 20G lvm -n root|<br />
/run/lvm/lvmetad.socket: connect failed: No such file or directory<br />
WARNING: Failed to connect to lvmetad. Falling back to internal scanning.<br />
/dev/lvm/root: not found: device not cleared<br />
Aborting. Failed to wipe start of new LV.}}<br />
<br />
(Physical volume and volume group creation worked despite {{ic|/run/lvm/lvmetad.socket: connect failed: No such file or directory}} being displayed.)<br />
<br />
This could be easily worked around by creating the logical volumes outside the chroot (from the Debian host). They are then available once chrooted again.<br />
<br />
{{Accuracy|This problem did not arise when installing from a Debian 7 host without lvmetad enabled. The recommended messaround with {{ic|/etc/lvm/lvm.conf}} looks rather error prone (2015-07-26).}}<br />
<br />
Also, if the system you are using has lvm, you might have the following output:<br />
<br />
{{hc|1=# grub-install --target=i386-pc --recheck /dev/mapper/main-archroot|2=<br />
Installing for i386-pc platform.<br />
/run/lvm/lvmetad.socket: connect failed: No such file or directory<br />
WARNING: Failed to connect to lvmetad. Falling back to internal scanning.<br />
/run/lvm/lvmetad.socket: connect failed: No such file or directory<br />
WARNING: Failed to connect to lvmetad. Falling back to internal scanning.<br />
/run/lvm/lvmetad.socket: connect failed: No such file or directory<br />
WARNING: Failed to connect to lvmetad. Falling back to internal scanning.<br />
/run/lvm/lvmetad.socket: connect failed: No such file or directory<br />
WARNING: Failed to connect to lvmetad. Falling back to internal scanning.<br />
/run/lvm/lvmetad.socket: connect failed: No such file or directory<br />
WARNING: Failed to connect to lvmetad. Falling back to internal scanning.<br />
}}<br />
<br />
This is because debian does not use lvmetad by default. You need to edit {{ic|/etc/lvm/lvm.conf}} and set {{ic|use_lvmetad}} to {{ic|0}}:<br />
<br />
use_lvmetad = 0<br />
<br />
This will trigger later an error on boot in the initrd stage. Therefore, you have to change it back after the grub generation. In a software RAID + LVM, steps would be the following:<br />
<br />
* After installing the system, double check your [[Mkinitcpio]] and your bootloader settings. See [[:Category:Boot loaders]] for a list of bootloaders.<br />
* You may need to change your {{ic|/etc/mdadm.conf}} to reflect your [[RAID]] settings (if applicable).<br />
* You may need to change your {{ic|HOOKS}} and {{ic|MODULES}} according to your [[LVM]] and [[RAID]] requirements: {{ic|1=MODULES="dm_mod" HOOKS="base udev '''mdadm_udev''' ... block '''lvm2''' filesystems ..."}}<br />
* You will most likely need to generate new initrd images with mkinitcpio. See [[Mkinitcpio#Image creation and activation]].<br />
* Set {{ic|1=use_lvmetad = 0}} in {{ic|/etc/lvm/lvm.conf}}.<br />
* Update your bootloader settings. See your bootloader's wiki page for details.<br />
* Set {{ic|1=use_lvmetad = 1}} in {{ic|/etc/lvm/lvm.conf}}.<br />
<br />
===== Fedora-based host =====<br />
<br />
On Fedora based hosts and live USBs you may encounter problems when using {{ic|genfstab}} to generate your [[fstab]]. Remove duplicate entries and the "seclabel" option where it appears, as this is Fedora-specific and will keep your system from booting normally.<br />
<br />
== Things to check before you reboot ==<br />
<br />
Before rebooting, chroot into the newly-installed system.<br />
<br />
Make sure to create a user with password, so you can login via ssh. Root login is disabled by default since OpenSSH-7.1p2. <br />
<br />
Set a root password so that you can switch to root via su later:<br />
# passwd<br />
<br />
Install [[ssh]] and [[enable]] it to start automatically at boot.<br />
<br />
Configure the [[network]] connection to start automatically at boot.<br />
<br />
Set up a [[boot loader]] and configure it to use the swap partition you appropriated earlier as the root partition. You might want to configure your bootloader to be able to boot into your old system; it is helpful to re-use the server's existing /boot partition in the new system for this purpose.<br />
<br />
== Replacing the existing system without a LiveCD ==<br />
<br />
Find ~700MB of free space somewhere on the disk, e.g. by partitioning a swap partition. You can disable the swap partition and set up your system there. <br />
<br />
===Set old swap partition as new root partition===<br />
<br />
Check {{ic|cfdisk}}, {{ic|/proc/swaps}} or {{ic|/etc/fstab}} to find your swap partition. Assuming your hard drive is located on sdaX (X will be a number). <br />
<br />
Do the following:<br />
<br />
Disable the swap space:<br />
# swapoff /dev/sdaX<br />
<br />
Create a filesystem on it<br />
# fdisk /dev/sda<br />
(set /dev/sdaX ID field to "Linux" - Hex 83)<br />
# mke2fs -j /dev/sdaX<br />
<br />
Create a directory to mount it in<br />
# mkdir /mnt/newsys<br />
<br />
Finally, mount the new directory for installing the intermediate system.<br />
# mount -t ext4 /dev/sdaX /mnt/newsys<br />
<br />
=== Installation ===<br />
If less than 700MB are available, examine the packages in the group base, and select only those required to get a system with internet connection up and running in the temporary partition. This will mean explicitly specifying individual packages to pacstrap, as well as passing it the -c option, to get packages downloaded to the host system to avoid filling up valuable space.<br />
<br />
Once the new Arch Linux system is installed, reboot into the newly created system, and [[rsync#Full system backup|rsync the entire system]] to the primary partition.<br />
Fix the bootloader configuration before rebooting.</div>Towo