Dotfiles: Difference between revisions
(→Repositories: Ambrevar: Uses TRAMP) |
(→Repositories: Ambrevar: uses Circe) |
||
Line 73: | Line 73: | ||
|- | |- | ||
! [https://gitlab.com/Ambrevar/dotfiles Ambrevar] | ! [https://gitlab.com/Ambrevar/dotfiles Ambrevar] | ||
| Eshell || EXWM || Emacs || Emacs (Eshell) || Emacs | | Eshell || EXWM || Emacs || Emacs (Eshell) || Emacs TRAMP + dtach || EMMS || conky/dzen || mu4e || Circe | ||
|- | |- | ||
! [https://github.com/awalGarg/dotfiles awal] | ! [https://github.com/awalGarg/dotfiles awal] |
Revision as of 09:17, 24 January 2019
This article collects user repositories with custom configuration files, commonly known as dotfiles.
Version control
Managing dotfiles with version control systems 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(1).
To prevent untracked files (appearing in commits and removed by git-clean(1)), first exclude all files with gitignore(5):
~/.git/info/exclude
*
Then use git add -f
, for example:
$ git add -f ~/.config/*
And commit the changes with git-commit(1):
$ git commit -a
Other tools
- dotdrop — A tool to manage your dotfiles across different hosts and saving them to git without duplicates.
- dotfiles — A tool to make managing your dotfile symlinks in $HOME easy, allowing you to keep all of them in a single directory.
- dotgit — A comprehensive solution to managing your dotfiles.
- dots — A portable tool for managing a single set of dotfiles in an organized fashion.
- 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.
- GNU Stow — Can be used to symlink dotfiles from a repository into the $HOME tree. See [1] for more information.
- homeshick — git dotfiles synchronizer written in bash.
- homesick — Your home directory is your castle. Don't leave your dotfiles behind.
- mackup — a small Python utitlity to keep your application settings in sync.
- Pearl — Package manager for dotfiles, plugins, programs and any form of code accessible via git. Allow to easily share and sync packages across systems and have them ready to work out of the box.
- rcm — Can be used to symlink dotfiles from a repository into the $HOME tree.
- 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.
- 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.
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.
The drawback on having some of the configuration files in multiple branches is that you have to remember to maintain and synchronize changes. Use conditional logic to minimize the number of machine specific files. For example, bash scripts (i.e. .bashrc
) can apply different configuration depending on the machine name (or type, custom variable, etc.):
if [[ "$(uname -n)" == "archlaptop" ]]; then # laptop specific commands here else # desktop or server machine commands fi
Another approach is to manage machine-specific configuration with tools based on template engines, e.g. qualia or Dotdrop. This approach requires less manual work and doesn't cause merge conflicts.
Repositories
Author | Shell (Shell framework) | WM / DE | Editor | Terminal | Multiplexer | Audio | Monitor | IRC | |
---|---|---|---|---|---|---|---|---|---|
alfunx | zsh | awesome | vim | kitty | tmux | ncmpcpp/mpd | htop/lain | thunderbird | |
Ambrevar | Eshell | EXWM | Emacs | Emacs (Eshell) | Emacs TRAMP + dtach | EMMS | conky/dzen | mu4e | Circe |
awal | fish | i3 | vim | st | tmux | i3status | The Lounge | ||
ayekat | zsh | karuiwm | vim | rxvt-unicode | tmux | ncmpcpp/mpd | karuibar | mutt | irssi |
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 | |
BVollmerhaus | bash | i3-gaps | kakoune | rxvt-unicode | polybar | thunderbird | |||
cinelli | zsh | dwm | vim | termite-git | pianobar | htop | mutt-kz | weechat | |
dikiaap | zsh | i3-gaps | neovim | alacritty | tmux | i3blocks | |||
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 | ||
hugdru | zsh | awesome | neovim | rxvt-unicode | tmux | thunderbird | weechat | ||
insanum | bash | herbstluftwm | vim | evilvte | tmux | dzen | mutt-kz | ||
jasonwryan | bash/zsh | dwm | vim | rxvt-unicode | tmux | ncmpcpp | custom | mutt | irssi |
jdevlieghere | zsh | xmonad | vim | terminal | tmux | htop | mutt | weechat | |
jelly | zsh | i3 | vim | termite | tmux | ncmpcpp | mutt-kz-git | weechat | |
maximbaz | zsh | i3-gaps | neovim | kitty | py3status | thunderbird | |||
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 | |
pablox-cl | zsh (zplug) | gnome3 | neovim | kitty | |||||
reisub0 | bash | awesome | neovim | termite | mpd | conky | |||
sistematico | zsh/fish/bash | i3-gaps | vim/nano | termite | tmux | ncmpcpp | polybar | mutt | weechat |
sitilge | zsh | awesome | neovim | termite | thunderbird | ||||
swalladge | zsh/bash | i3 | neovim/vim | termite | tmux | cmus | i3pystatus | mutt | |
SyfiMalik | zsh | i3 | vim | rxvt-unicode | tmux | ncmpcpp/mpd | polybar | mutt | weechat |
thiagowfx | bash/zsh | i3 | vim/emacs | rxvt-unicode | ncmpcpp | i3blocks | |||
vodik | zsh | xmonad | vim | termite-git | tmux | ncmpcpp | custom | mutt | weechat |
w0ng | zsh | dwm | vim | rxvt-unicode | tmux | ncmpcpp | custom | mutt | irssi |
whitelynx | fish | i3 | neovim | kitty | i3pystatus | ||||
Wintervenom | bash | herbstluftwm | vim | rxvt-unicode | screen | mpd (mpc-utils) | hlwm-dzen2 | mutt | weechat |
wolfcore | bash | dwm | vim | rxvt-unicode | tmux | cmus | custom | weechat | |
zendeavor | zsh | i3 | vim | rxvt-unicode | tmux | ncmpcpp | i3status | weechat |
See also
- gregswiki:DotFiles
- XMonad Config Archive
- dotshare.it
- dotfiles.github.io
- terminal.sexy - Terminal color scheme designer