dotfiles - ArchWiki

# dotfiles

Related articles

- XDG Base Directory support

This article collects user repositories with custom configuration files, commonly known as dotfiles.

## Version control

Managing dotfiles with version control software such as Git helps to keep track of changes, share with others, and synchronize dotfiles across various hosts.

### Using gitignore

Keeping a git directory inside the home folder allows to directly keep track of changes. It is recommended to selectively add file contents to the index with git add.

To prevent untracked files (appearing in commits and removed by git clean), first exclude all files with gitignore:

    ~/.git/info/exclude

    *

Then use `git add -f`, for example:

    $ git add -f ~/.config/*

And commit the changes:

    $ git commit -a

### Other tools

- vcsh — Allows separating differents modules (e.g., Emacs config vs. zsh config) into individual repositories which can be maintained separately, as opposed to keeping all dotfiles in a single repository. Works with git only.

  https://github.com/RichiH/vcsh || vcshAUR

- yadm — Manages files across systems using a single Git repository. Provides a way to use alternate files on a specific OS or host. Supplies a method of encrypting confidential data so it can safely be stored in your repository.

  https://github.com/TheLocehiliosan/yadm || yadmAUR

- etckeeper — Intended to version-control system-wide configuration in /etc. Works by keeping track of permissions and modes which version-control software often ignores. Can use various SCM systems as a backend. Hooks can auto-commit changes to the repository before a system-upgrade; for pacman, these hooks currently have to be triggered manually.

  http://joeyh.name/code/etckeeper/ || etckeeper

- GNU Stow — Can be used to symlink dotfiles from a repository into the $HOME tree. See [1] for more information.

  http://www.gnu.org/software/stow/ || stow

### Maintaining dotfiles across multiple machines

This article or section needs language, wiki syntax or style improvements.

Reason: This and the section below need a rewrite (Discuss in Talk:Dotfiles#)

One way of maintaining dotfiles across various machines across various hosts while still allowing for per-host customizations, is by maintaining a master-branch for all shared configuration, while each individual machine has a machine-specific branch checked out. Host-specific configuration can be committed to the machine-specific branch; as shared configuration is added to the master-branch, the per-machine branches are then rebased on top of the updated master.

### Confidential information

Occasionally, software may keep plain-text passwords in configuration files, as opposed to hooking into a keyring. In these cases, git clean-filters may be handy to avoid accidentally commiting confidential information. E. g., the following .gitattributes file assigns a filter to the file “some-dotfile”:

    # .gitattributes
    some-dotfile filter=remove-pass

Whenever the file “some-dotfile” is checked into git, git will invoke the filter “remove-pass” on the file before checking it in. The filter must be defined in .git/config, e. g.:

    [filter "remove-pass"]
    clean = "sed -e 's/^password=.*/#password=TODO/'"

## Repositories

Author | Shell | WM / DE | Editor | Terminal | Multiplexer | Audio | Monitor | Mail | IRC
--- | --- | --- | --- | --- | --- | --- | --- | --- | ---
Ambrevar | zsh | awesome | emacs | rxvt-unicode |  | cmus | htop/vicious | mutt |
bamos | zsh | i3/xmonad | vim/emacs | rxvt-unicode | tmux | mpv/cmus | conky/xmobar | mutt | ERC
brisbin33 | zsh | xmonad | vim | rxvt-unicode | screen |  | dzen | mutt | irssi
cinelli | zsh | dwm | vim | termite-git |  | pianobar | htop | mutt-kz | weechat
drkhsh | zsh | dwm | vim | st | screen | cmus | conky | mutt | weechat
Earnestly | zsh | i3/orbment | vim/emacs | termite | tmux | mpd | conky | mutt | weechat
ErikBjare | zsh | xmonad/xfce4 | vim | terminator | tmux |  | xfce4-panel |  | weechat
falconindy | bash | i3 | vim | rxvt-unicode |  | ncmpcpp | conky | mutt |
graysky | zsh | xfce4 | vim | terminal |  | ncmpcpp | custom | thunderbird |
gtmanfred | zsh | dwm | vim | termite-git | tmux | mpd | conky | mutt | weechat
insanum | bash | herbstluftwm | vim | evilvte | tmux |  | dzen | mutt-kz |
izmntuk | zsh | xfce4 | vim | rxvt-unicode/yaft | tmux | cmus | xfce4-panel |  | irssi
jasonwryan | bash/zsh | dwm | vim | rxvt-unicode | tmux | ncmpcpp | custom | mutt | irrsi
jelly | zsh | i3 | vim | termite | tmux | ncmpcpp |  | mutt-kz-git | weechat
meskarune | bash | herbstluftwm | vim | rxvt-unicode | screen |  | conky |  | weechat
neersighted | zsh | i3 | vim | rxvt-unicode | tmux | ncmpcpp | htop | mutt | irssi
OK100 | bash | dwm | vim | rxvt-unicode |  | cmus | conky, dzen | mutt | weechat
unexist | zsh | subtle | vim | rxvt-unicode |  | ncmpcpp |  | mutt | irssi
vodik | zsh | xmonad | vim | termite-git | tmux | ncmpcpp | custom | mutt | weechat
w0ng | zsh | dwm | vim | rxvt-unicode | tmux | ncmpcpp | custom | mutt | irssi
Wintervenom | bash | herbstluftwm | vim | rxvt-unicode | screen | mpd (mpc-utils) | hlwm-dzen2 | mutt | weechat
wolfcore | bash | dwm | vim | rxvt-unicode | tmux | cmus | custom |  | weechat
xfausto | zsh | dwm | vim | st |  | ncmpcpp | conky |  |
thiagowfx | bash/zsh | i3 | vim/emacs | rxvt-unicode |  | ncmpcpp | i3blocks |  |
zendeavor | zsh | i3 | vim | rxvt-unicode | tmux | ncmpcpp | i3status |  | weechat
bstaletic | zsh | dwm | vim | terminator | screen | ncmpcpp | conky |  |

## See also

- Dotfiles - Greg's Wiki
- XMonad Config Archive
- dotshare.it
- dotfiles.org[dead link 2015-08-16] - Copy of contents[dead link 2015-08-16]
- dotfiles.github.io

Category:

- Dotfiles

Hidden categories:

- Pages or sections flagged with Template:Style
- Pages with dead links