dotfiles - ArchWiki

# dotfiles

This article collects links to many user repositories containing custom configuration files, often referred to as dotfiles.

## Keeping dotfiles under version control

Using version-control software to manage one’s dotfiles helps with:

- keeping track of changes

- sharing with others, e. g. by hosting one’s dotfiles on github

- synchronising dotfiles across various hosts

### Tools

Some tools exist which can facilitate managing version-controlled dotfiles in various ways. A problem addressed by most of these tools concerns keeping the dedicated path containing one’s dotfiles in sync with the file-system tree under $HOME. Scripts often do this by symlinking global config locations to the repository path (a notable exception is vcsh, which can track dotfiles in-place).

- dotfiles

  Symlinks files kept at a central path into the $HOME tree.

- dfm

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

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

### Maintaining dotfiles across multiple machines

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/'"

### Automatically generating screenshots with an X virtual framebuffer

screenshots/generate.sh in bamos/dotfiles shows how to use an X virtual framebuffer to generate screenshots of programs and colorschemes. Example results are stored in the screenshots directory.

## Repositories

Author | Shell | WM / DE | Editor | Terminal | Multiplexer | Audio | Monitor | Mail | IRC
--- | --- | --- | --- | --- | --- | --- | --- | --- | ---
Alad | zsh | i3 | emacs | xterm |  | deadbeef | htop | thunderbird | weechat
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
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 | i3 | vim/geany | rxvt-unicode | tmux | cmus | htop/i3bar | thunderbird | irssi
jasonwryan | bash/zsh | dwm | vim | rxvt-unicode | tmux | ncmpcpp | custom | mutt | irrsi
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 - Copy of contents
- dotfiles.github.io

Category:

- Dotfiles